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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sk0806 高级黑马   /  2014-9-9 17:54  /  2994 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 付江涛 于 2014-9-9 18:13 编辑

在打印语句中如何打印这3个x变量?
  1. class A
  2. {
  3.         int x = 1;
  4.         class B
  5.         {
  6.                 int x = 2;
  7.                 void func()
  8.                 {
  9.                         int x = 3;
  10.                         System.out.println( ? );
  11.         }
  12.     }
  13. }
复制代码




这道题,大家是怎么理解的?求回复解答......

17 个回复

倒序浏览
1.x会从局部变量想成员变量依次寻找,最先找到那个就打印那个
2.this.x当前类的成员变量
3.A.this.x表示A类的x
回复 使用道具 举报
  1. class  InnerTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //创建内部类B的对象
  6.                 A.B ab = new A().new B();
  7.                 //调用内部类B的方法输出结果
  8.                 ab.func();
  9.                
  10.         }
  11. }
  12. class A {
  13.         int x = 1;
  14.         class B {
  15.                 int x = 2;
  16.                 void func() {
  17.                         int x = 3;
  18.                         System.out.println("内部类B的局部变量x="+x+"\n内部类B的成员变量x="+this.x+"\n外部类A的成员变量x="+A.this.x);
  19.         }
  20.     }
  21. }
复制代码
回复 使用道具 举报
x 局部变量  this.x 内部类成员变量  A.this.x外部类成员变量
回复 使用道具 举报
前面已经有正确答案 了哇,多思考还是蛮好的
回复 使用道具 举报
xplcc 发表于 2014-9-9 18:00
1.x会从局部变量想成员变量依次寻找,最先找到那个就打印那个
2.this.x当前类的成员变量
3.A.this.x表示A类 ...

恩恩,谢谢!
回复 使用道具 举报
hike_2008 发表于 2014-9-9 19:00
前面已经有正确答案 了哇,多思考还是蛮好的

恩恩,谢谢
回复 使用道具 举报
回复 使用道具 举报
x=3   this.x=2    A.this.x=1
回复 使用道具 举报
由内向外找,方法中的x直接打印即可,B类中的x是this.x,A类中的x需要创建对象,通过对象来读取
回复 使用道具 举报
这是成员变量,局部变量,和外部类变量的区别
回复 使用道具 举报
米家小九 来自手机 中级黑马 2015-1-20 21:33:13
12#
唉,学着后边的,忘着前边的
回复 使用道具 举报
初学者表示涨姿势了啊,不是大神们指点真心搞不明白哈、、、、
回复 使用道具 举报
NB.真真是涨见识了.
回复 使用道具 举报
twa42 中级黑马 2015-5-29 11:47:32
15#
原来这样,又弄懂了一个问题止。。这论坛太好了:lol
回复 使用道具 举报
这不是测试题中的吗  
回复 使用道具 举报

困死了,明天在验证
回复 使用道具 举报
多谢解答疑惑
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马