1行 public class TempTest {
2行 private void test1(A a){
3行 a.age = 20;
4行 System.out.println("test1方法中的age="+a.age);
5行 }
6行 public static void main(String[] args) {
7行 TempTest t = new TempTest();
8行 A a = new A();
9行 a.age = 10;
10行 t.test1(a);
11行 System.out.println("main方法中的age="+a.age);
12行 }
13行 }
14行 class A{
15行 public int age = 0;
16行 }
结果是2个打印都是20
问题是运行到第10行时,将t.test1的a传给test1方法中的a,由于是引用传递,所以2个同时指向同一个空间age=10,我已经明白到了这一步~!!
但为什么会main里面的age也变成了20了?难道又重新运行了第3行?(为什么不再运行第9行了?)
到底运行顺序是怎么样的? 务必回答我这个问题啊~!!!
麻烦各位大大赐教啊~!!
2行 private void test1(A a){
3行 a.age = 20;
4行 System.out.println("test1方法中的age="+a.age);
5行 }
6行 public static void main(String[] args) {
7行 TempTest t = new TempTest();
8行 A a = new A();
9行 a.age = 10;
10行 t.test1(a);
11行 System.out.println("main方法中的age="+a.age);
12行 }
13行 }
14行 class A{
15行 public int age = 0;
16行 }
结果是2个打印都是20
问题是运行到第10行时,将t.test1的a传给test1方法中的a,由于是引用传递,所以2个同时指向同一个空间age=10,我已经明白到了这一步~!!
但为什么会main里面的age也变成了20了?难道又重新运行了第3行?(为什么不再运行第9行了?)
到底运行顺序是怎么样的? 务必回答我这个问题啊~!!!
麻烦各位大大赐教啊~!!
解决方案 »
- Java Image 生成图片
- 怎样在JAVA中调用C语言的函数??
- 有人推荐个画图(diagram,或者UML那种图)的软件么?简单好用,可以export出来,然后放到word上面的。谢谢了!
- &与&&的区别?
- 关于javamail发邮件的两个问题
- 请问在在嵌入了applet的html中,怎么响应applet事件,就像html响应ocx控件的事件
- 有没有热心的人帮助我学习JAVA,还有C语言.
- NetBeans中文免费版在哪下?
- java多态测试小程序问题求解
- 菜鸟新手制作五子棋小游戏出现小问题,请大神解答
- 帮忙编写个小程序啊
- 你能用多少种办法输出"Hello Word!"把你认为最简单和最复杂的方法写出来!
2.当把a传给test1方法时,jvm复制了一个a的引用D传给test1方法,这个引用D也指向内存地址temp,
3.在你的test1方法中,a.age = 20;实际上是把地址temp中的A实例的内容改变了,而main中的变量a还是指向地址temp,所以两次都打印出20,
4,如果在test1方法中用a = new A();a.age=20;那就把引用D的指向改了,不再指向地址temp了,而main中的变量a还是指向地址temp的,这时候就会打印10,20了
要养成结贴的好习惯.
a.age都是指向了同一个引用地址了也就是20
你的逻辑有问题
这个里面的a和你问的问题没有任何关系.
这里只是一个你要传的对象而已;
你这个方法一调用就会把a.age的内存地址改变
http://blog.csdn.net/niuniu20008/archive/2008/09/19/2953785.aspx
http://blog.csdn.net/niuniu20008/archive/2008/09/19/2953785.aspx