您的位置:首页 > 编程语言 > Java开发

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

2017-05-06 16:45 561 查看

字符串:

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无关。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: