class test1 {
public static void call(String c) {
c = "123";
}
public static void main(String[] args) {
String a = "abc";
String b = a;
call(a);
System.out.println(a);
System.out.println(b);
}
}
test1 输出的结果是
abc
abc
class node {
public int a, b, c;
public node(int _a, int _b, int _c) {
a = _a; b = _b; c = _c;
}
};
public class test2 {
public static void call(node A) {
A.a = 5;
}
public static void main(String[] args) {
node A = new node(1,2,3);
node B = A;
call(A);
System.out.println(A.a);
System.out.println(B.a);
}
}
test2的输出结果是
5
5
总结一下:
test2改变时因为我们传的是引用,我们可以修改指向内存中的值,
test1不改变时因为字符串在java中是不可变类,“123”是一个新的对象,我们把c指向了“123”这个对象,那么对于原来的a,b 没有任何影响