黑马程序员技术交流社区

标题: 关于static的问题 [打印本页]

作者: 郭亚飞    时间: 2011-9-2 14:27
标题: 关于static的问题
写了一个使用静态变量统计类产生的实例对象个数的程序,如下:
class Person
{
       static int count=0;
       public Person()
       {
              System.out.println(++count);
       }
}
class TestPerson
{
       public static void main(String [] args)
       {
              new Person();
              new Person();
              new Person();
              new Person();
       }
}
把count定义为静态变量的时候,运行结果是1  2  3  4,
如果去掉static,运行结果是1  1  1  1,
这是为什么啊,区别在哪里?视频上讲的,听了好几遍,也没听明白,只知道静态变量被所有的实例对象所共享。这个问题总感觉像窗户纸,一点就破,但就是想不明白,求高手点破~
作者: 匿名    时间: 2011-9-2 14:38
这个简单来说就是 这个属性的生命周期问题
加上static 这个属性只有在第一次调用person类的时候被赋值,然后被存放在内存中,由于类存存在这个属性,下次调用person时候,count属性不会被重新赋值  而是直接使用内存中的count,

去掉static的话 count属性会跟随着person的使用结束,就被销毁掉,每次使用用person类,内存新开辟一个空间给count,初始值始终是0
作者: 匿名    时间: 2011-9-2 16:31
标题: 回复 沙发 的帖子
醍醐灌顶~~~谢谢~
作者: 匿名    时间: 2011-9-2 19:32
这个 static 很重要,要记牢了.




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