黑马程序员技术交流社区

标题: 面试题之成员变量问题 [打印本页]

作者: 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