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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在打印语句中如何打印这3个x变量?
class A {
                                int x = 1;                               
class B {
                                int x = 2;
                                                void func() {
                                int x = 3;
                                        System.out.println(x);
        }
    }
}
}
谢谢各位大神了!!

评分

参与人数 1黑马币 +3 收起 理由
杨佳名 + 3 加油!

查看全部评分

4 个回复

倒序浏览
  1. class A
  2. {
  3.         int x=1;
  4.         //定义内部类
  5.         class B
  6.         {
  7.                 int x=2
  8.                 void func()
  9.                 {
  10.                         int x=3;
  11.                         /*
  12.                         方法中有x,所以会打印方法中的x,如果方法中没有,会
  13.                         去找内部类,内部类中有,会打印内部类中的x,如果内部
  14.                         类中也没有,才会去找A类的成员变量
  15.                         */
  16.                         System.out.println(x);
  17.                         //加上this引用,引用类变量,可以打印内部类的成员变量x
  18.                         System.out.println(this.x)
  19.                         //加上类名.this的引用,可以打印外部类的成员变量
  20.                         System.out.println(A.this.x);
  21.                 }
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报 1 0
记得这是道基础测试题
回复 使用道具 举报

感谢,我也明白了一些
回复 使用道具 举报
在方法中引用变量 1 如果这个变量是在方法内定义的 直接引用就可以了
2 如果这个变量是类的成员变量 引用格式 类名.this.变量名 如果这个方法在这个类中 则可以省去本类名
用到你的例子就是 方法func()的局部变量 要打印 直接用x
B类的成员变量要打印 B.this.X 因为func()是B类中定义的方法 B可以省去,不省去也可以
A类的成员变量要打印 A.this.X 因为func()不是A类的方法 所以A不可以省
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马