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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭亚飞 黑马帝   /  2011-9-2 14:27  /  1707 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写了一个使用静态变量统计类产生的实例对象个数的程序,如下:
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,
这是为什么啊,区别在哪里?视频上讲的,听了好几遍,也没听明白,只知道静态变量被所有的实例对象所共享。这个问题总感觉像窗户纸,一点就破,但就是想不明白,求高手点破~

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-9-2 14:38:46
沙发
这个简单来说就是 这个属性的生命周期问题
加上static 这个属性只有在第一次调用person类的时候被赋值,然后被存放在内存中,由于类存存在这个属性,下次调用person时候,count属性不会被重新赋值  而是直接使用内存中的count,

去掉static的话 count属性会跟随着person的使用结束,就被销毁掉,每次使用用person类,内存新开辟一个空间给count,初始值始终是0

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 回答的不错!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-2 16:31:47
藤椅

回复 沙发 的帖子

醍醐灌顶~~~谢谢~
回复 使用道具 举报
黑马网友  发表于 2011-9-2 19:32:43
板凳
这个 static 很重要,要记牢了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马