黑马程序员技术交流社区
标题:
面试题之成员变量问题
[打印本页]
作者:
xiaogui
时间:
2016-5-10 22:32
标题:
面试题之成员变量问题
class Wrench2 {
int size;
public static void main(String [] args) {
Wrench2 w=new Wrench2();
w.size=11;
Wrench2 w2=go(w, w.size);
System. out .print (w2. size);
}
public static Wrench2 go(Wrench2 wr. int s) {
S=12;
return wr;
}
}
结果为:
A. 11
B. 12
c.编译失败。
D.运行时异常被抛出
这道题怎么分析?可以讲解一下思路么?
ps:答案是A。
作者:
HeiMaZ
时间:
2016-5-10 22:55
编译失败啊,是你在这输入错了?public static Wrench2 go(Wrench2 wr. int s)
作者:
xiaogui
时间:
2016-5-10 23:00
HeiMaZ 发表于 2016-5-10 22:55
编译失败啊,是你在这输入错了?public static Wrench2 go(Wrench2 wr. int s)
不好意思。我自己写错了。应该是这样的:
public class Wrench2 {
int size;
public static void main(String[] args) {
Wrench2 w = new Wrench2();
w.size = 11;
Wrench2 w2 = go(w, w.size);
System.out.print(w2.size);
}
static Wrench2 go(Wrench2 wr, int s) {
s = 12;
return wr;
}
}
作者:
xiaogui
时间:
2016-5-10 23:01
题目应该是没有错的。请再看一遍。谢谢。
作者:
HuaQuan
时间:
2016-5-10 23:05
看不懂,顶起
作者:
小红花
时间:
2016-5-11 10:22
表示也是有点看不懂
作者:
梦想与渴望
时间:
2016-5-11 11:34
有点看不太懂
作者:
HackSon
时间:
2016-5-11 13:31
Wrench2 w2 = go(w, w.size);该代码把对象w和w.size作为参数传递给方法 go() ,go()方法的返回值就是传入的参数w,所以w和w2是的引用指向同一个对象,所以其size值相等。另外,go()对s的修改不影响传入的 w 里的成员变量size,因为基本数据类型为值传递,所以 w 的size属性依然是11.w2的size属性也为11
作者:
hlh
时间:
2016-5-11 20:25
就是把w的地址传给w2了 w2和w指向同一个对象
作者:
再见卡卡罗特
时间:
2016-5-11 20:53
看一看。。。。。。。。
作者:
溪溪笑
时间:
2016-5-11 20:53
辛苦了。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2