public class Test{
public static void main(String[] args){
Integer i = new Integer(0);
set(i);
System.out.println(i);
}
static void set(Integer i){
i = new Integer(i.intValue()+1);
System.out.println(i);
}
}结果为:
1
0
我的问题是:Integer不是引用类型吗?为什么在set方法里对i的修改不是对原来i内容的修改。

解决方案 »

  1.   

    Java没有这样的参数只有C++,C#有类似功能
    Java如果非要做这样的事情,学习一下Holder类的概念,但是很不值得。
    要明白,Java的语法。很弱
      

  2.   

    因为set里面是对参数copy的赋值(i=...),而不是对原来参数赋值。
      

  3.   

    这里参数是引用类型的,copy的是引用(或叫地址)吧,指向的实际内容没变吧,我就是考虑到C#的有ref试着用java写的这个程序
      

  4.   

    拷贝的是地址,但是,你在函数内部, i = new Integer(i.intValue()+1);让这个地址指向了其他的内存空间