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,是什么原因呀??
/**
* 内部类访问外部静态变量
* @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,是什么原因呀??
解决方案 »
- java JTabbedPane 页的增加与删除问题
- 一个融合了6种方法的排序代码,求修改,急急急急急急急急急急急
- java如何判断键盘输入双键并读取?
- 开始学JAVA,大家推荐几本书
- 请问一个类是不是必须有一个无参的构造方法?
- StrutsTestCase的问题
- 请教 System.out.println("test " + s1=="Java"); Is this a bug?
- 最近总在这麻烦各位!现在散点分孝敬各位大虾!
- java web 是一种服务器?他和apache是什么关系、
- 菜鸟的哀号!!!!
- 请教一个“Swing界面”的代码运行效果与预期不符的原因...
- 想找个java方面的实习或工作一定得会Ajax和SSh吗?在校也没怎么学这方面的内容啊,自己也还没看。是不是一定得会才行啊?
GroupThree.count++;
GroupThree.this.count++;
这两行代码中的count实际均为private static int count;
我想你不明白的地方在这里GroupThree.this,你认为这个是Student对象吧?其实不是,它是指GroupThree使用new创建出来的对象。
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了!因为++了两次!然后才输出的!
楼主,你要我说什么呢?
既然GroupThree.count++;和GroupThree.this.count++;是指向同一个对象,那么两次++操作就想到于增加了2呗。你给赋的值是10,10+2=?。