java基础技术知识点总结——字符串、循环、方法参数

来源:互联网 发布:淘宝特卖怎么删除 编辑:程序博客网 时间:2024/06/05 14:36

字符串:

String类是final的,意味着这个类不可继承,并且无法修改一个字符串的字符和大小。
进行字符串操作时,例如String s = “hello”; s +=”world”;实际上s指向的字符串常量地址已被修改。

StringBulider和StringBuffer有什么区别:
StringBufferd支持并发操作,线性安全的,适合多线程中使用。
StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。
线性安全–>速度慢。
速度快–>线性不安全。

循环:

for each循环中,可以用来依次处理数组或者集合中的元素,其中集合表达式必须是实现了Iterable接口的类对象,例如ArrayList。

方法参数:

在Java中,一个对象变量并没有实际上包含一个对象,而是保存了引用这个对象的地址值。因为Java是按值传递,例如:基本类型:int a = 1;exchange(a);public static void exchange(int b){//将a的值传递给b,此时b为1    b = b * 3;//此时b为3}System.out.println(a);//但是a的值不受影响,还是为1。而对象引用:class Person{    String name;    double salary;    public Person(String name,double salary){        this.name = name;        this.salary = salary;    }}public static void tripleSalary(Person x){    x.salary = x.salary * 3;//设置3倍薪水}public static void exchange(Person a,Person b){    Person c = a;    a = b;    b = c;}public static void main(String[] args){    Person p = new Person("A",5000);    tripleSalary(p);//此时A的薪水变成15000。    Person p1 = new Person("p1",2000);    Person p2 = new Person("p2",4000);    exchange(p1,p2);//方法调用后,p1仍旧是p1,并不会指向p2。}因为在tripleSalary(p)这个调用方法中,将p的值传递给了x,此时p的值(也就是引用对象的地址)和x指向了相同的一个地址,而在方法中,x针对salary这个字段进行了重新赋值,p的salary属性也随之进行了修改(因为指向了同一个对象)。在exchange(p1,p2)调用过程中,将p1的值传递给a,将p2的值传递给b,然后a和b的值进行了互换,但是p1和p2的值却不会有任何改变,因为a和b只是交换了各自引用的对象地址,与p1和p2无关。
0 0
原创粉丝点击