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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java陈辉 中级黑马   /  2013-12-20 20:41  /  900 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 java陈辉 于 2013-12-21 20:13 编辑

下面这段代码打印的结果为什么是6?而不是4或者5呢?求解释。
class Outer{
        int num=4;
        class Inner{
              int num=5;                  //将这里注释掉,打印的结果又变成了4.
                void method(){
                        int num=6;      //将这里注释掉,打印的结果变成了5.
                        System.out.println(num);
                }
        }
   public void show(){
         Inner in=new Inner();
         in.method();
    }
}
public class InnerDemo {
         public static void main(String[] args) {
          new Outer().show();
        }

}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

正序浏览
这是关于变量的范围的问题,哈哈,你可以在加两句System.out.println(num);可能让你看的更明白;
  1. class Outer{
  2.         int num=4;
  3.         class Inner{
  4.               int num=5;                  //将这里注释掉,打印的结果又变成了4.
  5.                 void method(){
  6.                         int num=6;      //将这里注释掉,打印的结果变成了5.
  7.                         System.out.println("method:"+num);
  8.                 }
  9.                 {
  10.                         System.out.println("Inner:"+num);
  11.                 }
  12.         }
  13.    public void show(){
  14.          Inner in=new Inner();
  15.          in.method();
  16.          System.out.println("Outer:"+num);
  17.     }
  18. }
  19. public class InnerDemo {
  20.          public static void main(String[] args) {
  21.           new Outer().show();
  22.         }

  23. }
复制代码


结果是:
Inner:5
method:6
Outer:4
看看的,这样应该挺清楚了

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
这个很简单啊,你忘记了,变量的使用范围了吗,例如你在一个大的范围里面定义了变量num,然后在这个大的范围里面又有一个方法里面也是也有一个num,那么此时相同的num会被覆盖,就是说小范围的num会覆盖大范围的num,如果是不同名字的变量则不会出现这种情况。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
首先要说明的是:
      你给的程序有问题,方法少了括号,变量少了分号
其次:
       打印变量,记住一句就行,局部有就打印局部的,
局部没有就打印成员的。
首先在局部中找,找到就打印局部中的6,注释掉局部的
就打内部类中的成员变量,找到就打印成员变量5,再注释
掉,就在外部类中找,找到就打印外部类中的4.

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马