关于值传递和引用传递,我更喜欢说传递的都是拷贝。
如果拷贝的这份东西就是一个值,那就是值,如果拷贝的东西指向的是一个对象,那就是引用传递。
具体这个引用的值会不会影响之前的值,那还要看这个对象是否是可变对象,如果遇到类似于String 这样的不可变对象,传递的即便是new出来的对象,但进去的值也不会对传递前的值产生任何影响。其他的引用传递,一般都会对之前的对象值产生影响。
--这是引论坛上别人说的话,觉得很有道理。
以下是自己写的代码,mark一下。
public class Test {
String name = "柯辉";
int age = 10;
void t1() {
Integer a = 1;
String b = "周峰";
t2(a);
System.out.println("t2" + a);
t3(a);
System.out.println("t3" + a);
t4(b);
System.out.println("t4" + b);
Test test = new Test();
t5(test);
System.out.println("t5" + "--" + test.age + "--" + test.name);
}
String t4(String b) {
b += "草";
return b;
}
void t5(final Test test) {
test.setName("管子");
test.setAge(5);;
}
int t2(int a) {
a += 1;
return a;
}
int t3(int a) {
a += 1;
return a;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
Test test = new Test();
test.t1();
}
}
打印结果
t21
t31
t4周峰
t5--5--管子