A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Test3_Wrench2 {
        int size;                                                                                                //定义类的成员变量size

        public static void main(String[] args) {                                //主方法       
                Test3_Wrench2 w = new Test3_Wrench2();                                //创建Test3_Wrench2类的对象w               
                w.size = 11;                                                                                //通过对象.成员变量赋值,即w.size = 11;
                Test3_Wrench2 w2 = go(w, w.size);                                        //创建对象w2
                /*
                 *1.调用go方法,传入参数为类对象w和整数类型w.size
                 *2.w.size传入后被赋值为12,即w.size = 12;
                 *3.调用完go方法返回的对象w赋值给w2,即w2对象的地址值指向w地址值
                 *4.go方法被调用完后弹栈
                 *5.w.size = 12属于基本数据类型值传递,go方法弹栈之后不会改变
                 *6.Test3_Wrench2 w2 = w属于引用数据类型值传递,go方法弹栈后会改变w2的地址值,即w2和w一样指向同一个地址值
                 *7.所以输出w2.size的值是11
                 */
                System.out.print(w2.size);
        }

        static Test3_Wrench2 go(Test3_Wrench2 wr, int s) {                //成员方法
                /*
                 * 静态保证主方法可以调用,返回值类型是Test3_Wrench2类,参数列表Test3_Wrench2 wr和int s
                 */
                s = 12;                                                                                                //变量s赋值
                return wr;                                                                                        //返回wr对象,即返回参数列表中的wr对象
        }
}
结果为:
A. 11
B. 12
c.编译失败。
D.运行时异常被抛出
答案是A。
ps:上面面试题是之前遇到的,提问后整理分析,包括注解分析和画图分析,有用的请拿去看看,谢谢。

面试题成员变量.png (167.74 KB, 下载次数: 2)

画图分析

画图分析

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马