Topic: 请高人解答 |
Print this page |
1.请高人解答 | Copy to clipboard |
Posted by: satre Posted on: 2003-08-25 03:04 public class q101 { public static void add3(Integer i) { int val = i.intValue(); val += 3; i = new Integer(val); } public static void main(String args[]) { Integer i = new Integer(0); add3(i); System.out.println(i.intValue()); } } 为什么结果是0,而不是3? |
2.Re:请高人解答 [Re: satre] | Copy to clipboard |
Posted by: jacob Posted on: 2003-08-25 10:16 这也太明显了把....? reference.... |
3.Re:请高人解答 [Re: satre] | Copy to clipboard |
Posted by: penzheng Posted on: 2003-08-25 11:34 i = new Integer(val); 当你new的时候已不是原来的指针了 |
4.Re:请高人解答 [Re: satre] | Copy to clipboard |
Posted by: mingaik Posted on: 2003-08-25 15:52 Variable is pass by value not by reference. So variable "i" remain unchange after calling the function. |
5.Re:请高人解答 [Re: satre] | Copy to clipboard |
Posted by: maolu Posted on: 2003-08-25 16:08 public static void add3(Integer i)中的参数是Reference(传参照),不是传地址。太简单了!! |
6.Re:请高人解答 [Re: maolu] | Copy to clipboard |
Posted by: penzheng Posted on: 2003-08-25 16:32 怎末那末多土人,传reference难道不是地址吗。是不是学计算机的。 |
7.Re:请高人解答 [Re: penzheng] | Copy to clipboard |
Posted by: helloworld Posted on: 2003-08-25 21:16 有没有说得明白的,不要说简单一类的话. |
8.Re:请高人解答 [Re: satre] | Copy to clipboard |
Posted by: satre Posted on: 2003-08-25 23:20 Integer i, i就是一个reference. 是传参而不是传值. 我的困惑在于函数是传参,在子函数里修改了 i 的地址 (i=new Integer(3)), 那么从子函数里出来,i也应该把改变的值传出来. 哪里不对了吗? 谢谢 |
9.Re:请高人解答 [Re: satre] | Copy to clipboard |
Posted by: satre Posted on: 2003-08-25 23:34 penzheng 说的有道理,好象有些懂了. |
10.Re:请高人解答 [Re: satre] | Copy to clipboard |
Posted by: hwx Posted on: 2003-08-28 11:16 你要搞清楚,在add3方法内部的那个变量 i ,其实只是add3方法中的局部变量 而已。i 重新赋值后它指向一个新Integer对象的reference,而原来方法外部 的 i (在main方法中那个)并未受到任何修改,打印结果当然还是0。 另外,Integer属于value object,是Immutable的类型, 象你这样用一个方法传参进去修改Integer的Value恐怕是不可能的。 要改的话,只能在main方法中: Integer i = new Integer(0); i = new Integer(add3(i.intValue())); System.out.println(i.intValue()); 另外,add3改为: public static int add3(int i) { return i + 3; } 这样,在main方法中打印结果为3。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |