public int f(Integer i){ ++i; return i; } public static void main( String args[]){ Inte aaa = new Inte(); Integer i = 1; i = aaa.f(i); System.out.println(i); }
在 f 方法内部的 ++i 源数据copy后拆箱了吧 也就是说原来的 Integer i 没发生改变 改变的是另一个罢了猜测的 呵呵
小a,1.5的新特性...叫什么auto-boxing...支持int这样的基本数据类型与其对应的类的自动转化了. 好象是这样........这是这个东西让值传递和引用传递变的更诡异了. 你可以尝试下这样写 class A { Integer i=new Integer(0); } class B { public static void main(String[] agrs) { A a=new A(); f(a); System.out.println(a.i); } public static void f(A a) { ++a.i; } } 相信你能达到你的目的 当然你要问为什么,我只能告诉你,你需要去看JAVA的参数机制
...
system.out.print(f(i));
都void的了,还return i = =!
++i;
return i;
}
public static void main( String args[]){
Inte aaa = new Inte();
Integer i = 1;
i = aaa.f(i);
System.out.println(i);
}
Integer i = new Integer(1);
赞同。既然被你申明成了vuid类型,就不会返回任何改变的值了。要想改变,参考4楼的。
好象是这样........这是这个东西让值传递和引用传递变的更诡异了.
你可以尝试下这样写
class A
{
Integer i=new Integer(0);
}
class B
{
public static void main(String[] agrs)
{
A a=new A();
f(a);
System.out.println(a.i);
}
public static void f(A a)
{
++a.i;
}
}
相信你能达到你的目的
当然你要问为什么,我只能告诉你,你需要去看JAVA的参数机制