class Value{
public int i = 15;
}
public class Test{
public static void main(String argv[]){
Test t = new Test();
t.first();
}
public void first(){
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i){
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
A.15 0 20
B.15 0 15
C.20 0 20
D.0 15 20答案是A,有谁知道解题步骤吗
public int i = 15;
}
public class Test{
public static void main(String argv[]){
Test t = new Test();
t.first();
}
public void first(){
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i){
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
A.15 0 20
B.15 0 15
C.20 0 20
D.0 15 20答案是A,有谁知道解题步骤吗
解决方案 »
- 一个新手的疑惑,求解答
- window.open为什么在IE7中不好用呢,提示新窗口为空或不是对象,但在IE6中就没问题
- 如何学习JAVA
- 如何取随机率?急!在线等待
- 向高手讨教SWT多线程问题
- 关于i++的问题
- 送100分!Lotus 与java有什么联系没有?Lotus的发展潜力大么,从基于j2ee的web开发,转到lotus划得来不
- 用java写聊天室服务程序碰到的一些问题
- 请高手帮忙指点一下,如何把一个java应用程序做为windows的服务,开机时自动运行??
- 请问下面这个小程序错在什么地方?谢谢!
- 求网站自动注册自动登录 群发信息的java源代码
- Rcp,JFace都是对SWT进行封装? 两者间有什么区别?
VALUE对象的值被修改成了20,而后V引用又指向了一个新生成的VALUE对象!注意这里实际上内存里面有两个VALUE对象了!所以SENCOND打印出来的V.I是刚生成的,值就是15.前面的是20.中间的0没什么好说的!
Test t = new Test();
t.first();调用方法first()
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i); 调用方法second(),此时i=5,v.i=25
Value val = new Value();
i = 0;
v.i = 20; 此时i=0,v.i=20
Value val = new Value();
v = val; 此处改变了引用,此时i=0,v.i=15而firsi()中的v.i仍然等于20
System.out.println(v.i + " " + i); 此时i=0,v.i=15
System.out.println(v.i); 此句在first()中,此处v.i=20楼主看看这个《献给Java初学者》
http://blog.csdn.net/KingWolfOfSky/archive/2009/08/13/4444231.aspx
int i = 5;
Value v = new Value();
v.i = 25;
执行后的内存图:
然后进入方法second,首先复制形参v和i,然后执行方法体中的语句:
i = 0;
v.i = 20;
Value val = new Value();
执行前三句后的内存图:
紧接着:
v = val;
形参v现在和val指向相同的对象此时System.out.println(v.i + " " + i);中的v为形参v(parameter),i为方法second中的局部变量i,外部的i(方法first中的)被屏蔽,所以打印的结果为:
15 0然后方法second结束,其中的所有形参结束生命周期,线程返回到方法first中,此时内存图为:执行System.out.println(v.i);
打印结果为:
20