public class test1 {
private int i = 0;
public test1(int i) {
this.i = i;
}
public static void process(test1 obj) {
obj = new test1(99);
obj.i --;
}
public static void main(String[] argv) {
test1 o1 = new test1(1);
process(o1);
System.out.println("o1.i=" + o1.i);
}
}
为什么输出结果就是 o1.i=1 求指导
因为在Java中所有的赋值操作都是值传递,在Process方法中new一个新对象,赋值给obj,这是一个值传递,不会改变传入引用的内容。
如果想要改变,假设有Set函数的情况下,在Process方法中执行obj.setI(99-1);就可以了。
数组是引用传址,这传值
因为新new出了一个对象啊,也就是说process()修改的是新的那个对象