黑马程序员技术交流社区

标题: 有个题不会做 有大神可以提供下思路吗! [打印本页]

作者: 安卓安小虾    时间: 2014-10-11 22:42
标题: 有个题不会做 有大神可以提供下思路吗!
在打印语句中如何打印这3个x变量?
class A {
                                int x = 1;                               
class B {
                                int x = 2;
                                                void func() {
                                int x = 3;
                                        System.out.println(x);
        }
    }
}
}
谢谢各位大神了!!


作者: 刘家斌    时间: 2014-10-11 22:53
  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. }
复制代码

作者: 不系之舟王    时间: 2014-10-12 16:42
记得这是道基础测试题
作者: chenglove1201    时间: 2014-10-12 17:42
刘家斌 发表于 2014-10-11 22:53

感谢,我也明白了一些
作者: 英雄传说ER    时间: 2014-10-12 18:48
在方法中引用变量 1 如果这个变量是在方法内定义的 直接引用就可以了
2 如果这个变量是类的成员变量 引用格式 类名.this.变量名 如果这个方法在这个类中 则可以省去本类名
用到你的例子就是 方法func()的局部变量 要打印 直接用x
B类的成员变量要打印 B.this.X 因为func()是B类中定义的方法 B可以省去,不省去也可以
A类的成员变量要打印 A.this.X 因为func()不是A类的方法 所以A不可以省




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2