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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 以防万一 金牌黑马   /  2013-7-7 14:57  /  2911 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 咦,我盗了太阳 于 2013-7-7 19:52 编辑

public class outer
{
        private int size;
        public class Inner
        {
                private int size;
                public void doStuff(int size)
                {
                        size ++;
                        this.size++;
                        outer.this.size++;
                }
        }
}
求分析。。。

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1

查看全部评分

14 个回复

倒序浏览
璐璐童鞋,你要解释神马?
回复 使用道具 举报
神之梦 发表于 2013-7-7 15:04
璐璐童鞋,你要解释神马?

整个都解释。。。
回复 使用道具 举报
public class outer
{
        private int size;
        public class Inner
        {
                private int size;
                public void doStuff(int size)
                {
                        size ++;//内部类自定义属性size++
                        this.size++;//传入的参数this.size = size  此size++
                        outer.this.size++;//类名调用外部类属性size++
                }
        }
}
等同于
public class outer
{
        private int size1;
        public class Inner
        {
                private int size2;
                public void doStuff(int size3)
                {
                        size2 ++;
                        size3++;
                        Oute. size1++;
                }
        }
}
我这样理解 不知道对不对

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
首先,outer类里面有一个内部类Inner,还有内部类中的douStuff()方法里面的变量涉及全局变量和局部变量和方法传参

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报

别人已经帮你解释了
回复 使用道具 举报
  1. public class outer
  2. {
  3.         private int size;
  4.         public class Inner
  5.         {
  6.                 private int size;
  7.                 public void doStuff(int size)
  8.                 {
  9.                         size ++;//这个size就是doStuff方法传进来的size
  10.                         this.size++;//这个this代表内部类Inner,size是Inner的成员变量size
  11.                         outer.this.size++;//这个代表的是外部类的成员变量size
  12.                 }
  13.         }
  14. }

  15. 加上数运行一下好理解
  16. public class Test1
  17. {
  18.         private int size = 10;
  19.         public class Inner
  20.         {
  21.                 private int size = 5;
  22.                 public void doStuff(int size)
  23.                 {
  24.                         size ++;
  25.                         System.out.println(size);
  26.                         this.size++;
  27.                         System.out.println(this.size);
  28.                         Test1.this.size++;
  29.                         System.out.println(Test1.this.size);
  30.                 }
  31.         }
  32.         
  33.        public static void main(String[] args)
  34.        {
  35.                   new Test1().new Inner().doStuff(2);;
  36.        }
  37. }
  38. //结果3   6    11
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
  1. public class outer
  2. {
  3.          private int size = 1;
  4.          public class Inner
  5.          {
  6.                  private int size = 2;
  7.                  public void doStuff(int size)
  8.                  {
  9.                          //size ++;
  10.                          //this.size++;
  11.                          //outer.this.size++;
  12.                                                  System.out.println(size);
  13.                                                  System.out.println(this.size);
  14.                                                  System.out.println(outer.this.size);
  15.                  }
  16.          }

  17.                  public static void main(String[] args)
  18.                 {
  19.                                 outer out = new outer();
  20.                                 Inner in = out.new Inner();
  21.                                 in.doStuff(3);
  22.                  }
  23. }
复制代码
public class outer
{
         private int size;
         public class Inner
         {
                 private int size;
                 public void doStuff(int size)
                 {
                         size ++;//调用doStuff时传入的整数+1
                         this.size++;//内部类size+1
                         outer.this.size++;//外部类size+1
                 }
         }
}

为嘛不换个变量名?为难自己啊.....
例子:

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
graspDN 发表于 2013-7-7 15:43
public class outer
{
         private int size;

{:2_33:}
3Q咯
回复 使用道具 举报

艾玛,太详细咯
3Q咯
{:2_35:}
回复 使用道具 举报
xuluheng718 发表于 2013-7-7 15:21
首先,outer类里面有一个内部类Inner,还有内部类中的douStuff()方法里面的变量涉及全局变量和局部变量和方 ...

简单明了,,3Q咯
回复 使用道具 举报
zhouchao 发表于 2013-7-7 15:19
public class outer
{
        private int size;

3Q咯

{:2_36:}
回复 使用道具 举报
神之梦 发表于 2013-7-7 15:23
别人已经帮你解释了

也谢谢苗子咯
嘿嘿
{:2_40:}
回复 使用道具 举报
zhouchao 发表于 2013-7-7 15:19
public class outer
{
        private int size;

前两个反了吧,第一个就近取方法的局部变量
回复 使用道具 举报
kaka小明 发表于 2013-7-7 17:24
前两个反了吧,第一个就近取方法的局部变量

额 感谢指点  好像是反了 :shutup:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马