黑马程序员技术交流社区

标题: 求解 [打印本页]

作者: 以防万一    时间: 2013-7-7 14:57
标题: 求解
本帖最后由 咦,我盗了太阳 于 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++;
                }
        }
}
求分析。。。
作者: 神之梦    时间: 2013-7-7 15:04
璐璐童鞋,你要解释神马?
作者: 以防万一    时间: 2013-7-7 15:15
神之梦 发表于 2013-7-7 15:04
璐璐童鞋,你要解释神马?

整个都解释。。。
作者: zhouchao    时间: 2013-7-7 15:19
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++;
                }
        }
}
我这样理解 不知道对不对
作者: xuluheng718    时间: 2013-7-7 15:21
首先,outer类里面有一个内部类Inner,还有内部类中的douStuff()方法里面的变量涉及全局变量和局部变量和方法传参


作者: 神之梦    时间: 2013-7-7 15:23
咦,我盗了太阳 发表于 2013-7-7 15:15
整个都解释。。。

别人已经帮你解释了
作者: denghui1010    时间: 2013-7-7 15:39
  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
复制代码

作者: 李江    时间: 2013-7-7 15:43
  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
                 }
         }
}

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

作者: 以防万一    时间: 2013-7-7 16:22
graspDN 发表于 2013-7-7 15:43
public class outer
{
         private int size;

{:2_33:}
3Q咯
作者: 以防万一    时间: 2013-7-7 16:22
denghui1010 发表于 2013-7-7 15:39

艾玛,太详细咯
3Q咯
{:2_35:}
作者: 以防万一    时间: 2013-7-7 16:23
xuluheng718 发表于 2013-7-7 15:21
首先,outer类里面有一个内部类Inner,还有内部类中的douStuff()方法里面的变量涉及全局变量和局部变量和方 ...

简单明了,,3Q咯
作者: 以防万一    时间: 2013-7-7 16:23
zhouchao 发表于 2013-7-7 15:19
public class outer
{
        private int size;

3Q咯

{:2_36:}
作者: 以防万一    时间: 2013-7-7 16:24
神之梦 发表于 2013-7-7 15:23
别人已经帮你解释了

也谢谢苗子咯
嘿嘿
{:2_40:}
作者: kaka小明    时间: 2013-7-7 17:24
zhouchao 发表于 2013-7-7 15:19
public class outer
{
        private int size;

前两个反了吧,第一个就近取方法的局部变量
作者: zhouchao    时间: 2013-7-7 17:38
kaka小明 发表于 2013-7-7 17:24
前两个反了吧,第一个就近取方法的局部变量

额 感谢指点  好像是反了 :shutup:




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