package classDemo;
/**
 * 内部类访问外部静态变量
 * @author Administrator
 *
 */
public class GroupThree {
private static int count;
private String name;

public class Student{
private int count;
private String name;
public void output(int count){
count++;
this.count++;
GroupThree.count++;
GroupThree.this.count++;
System.out.println(count+" "+this.count+" "
+GroupThree.count+" "+GroupThree.this.count);
}
}

public Student aStu() {
return new Student();
}

public static void main(String[] args) {
GroupThree g3 = new GroupThree();
GroupThree.count=10;
GroupThree.Student s1 = g3.aStu();
s1.output(5);
}}输出的结果是 6 1 12 12前面给出的两个解毋庸置疑,但是后面给出的12,是什么原因呀??

解决方案 »

  1.   

    原因很简单:
    GroupThree.count++;
    GroupThree.this.count++;
    这两行代码中的count实际均为private static int count;
    我想你不明白的地方在这里GroupThree.this,你认为这个是Student对象吧?其实不是,它是指GroupThree使用new创建出来的对象。
      

  2.   

    GroupThree.this.count 在以前的基础上加了一次。
      

  3.   


    public void output(int count){
    count++;
    this.count++;
    GroupThree.count++;
    System.out.println(count+" "+this.count+" "
    +GroupThree.count+" "+GroupThree.this.count);
    GroupThree.this.count++;
    System.out.println(count+" "+this.count+" "
    +GroupThree.count+" "+GroupThree.this.count);
    }添加进去,再运行看结果你就知道为什么不是11了!因为++了两次!然后才输出的!
      

  4.   

    这个我知道,但是为什么是12而不是11呢?
    楼主,你要我说什么呢?
    既然GroupThree.count++;和GroupThree.this.count++;是指向同一个对象,那么两次++操作就想到于增加了2呗。你给赋的值是10,10+2=?。