Lyylxf
2016-05-12 03:02
采纳率: 100%
浏览 1.2k
已采纳

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • havedream_one 2016-05-12 04:12
    已采纳

    图片说明

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • BlueZealot1982 2016-05-12 03:07

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

    评论
    解决 无用
    打赏 举报
  • XuJess 2016-05-12 03:15

    数组是引用传址,这传值

    评论
    解决 无用
    打赏 举报
  • 「已注销」 2016-05-12 05:16

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

    评论
    解决 无用
    打赏 举报
  • Hello_MyJie 2017-02-11 11:53
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题