2 lyylxf Lyylxf 于 2016.05.12 11:02 提问

一个java问题 值传递的

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 求指导

6个回答

havedream_one
havedream_one   2016.05.12 12:12
已采纳

图片说明

BlueZealot1982
BlueZealot1982   2016.05.12 11:07

因为在Java中所有的赋值操作都是值传递,在Process方法中new一个新对象,赋值给obj,这是一个值传递,不会改变传入引用的内容。
如果想要改变,假设有Set函数的情况下,在Process方法中执行obj.setI(99-1);就可以了。

CSDNXIAON
CSDNXIAON   2016.05.12 11:12

java值传递问题
java的值传递问题
关于java中的值传递问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

xulanshan33
xulanshan33   2016.05.12 11:15

数组是引用传址,这传值

Ro_bot
Ro_bot   2016.05.12 13:16

因为新new出了一个对象啊,也就是说process()修改的是新的那个对象

u013058549
u013058549   2017.02.11 19:53
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!