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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小子考驾照 中级黑马   /  2014-8-26 15:14  /  953 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用static的修饰的变量和方法,实际上是指定了这些变量和方法在内存中的“固定位置”-static storage,可以理解为所有实例对象共有的内存空间。static变量有点类似于C中的全局变量的概念;静态表示的是内存的共享,就是它的每一个实例都指向同一个内存地址。把static拿来,就是告诉JVM它是静态的,它的引用(含间接引用)都是指向同一个位置,在那个地方,你把它改了,它就不会变成原样,你把它清理了,它就不会回来了。
         那静态变量与方法是在什么时候初始化的呢?对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。
         我们常可看到类似以下的例子来说明这个问题:
Java代码  
1.        class Student{   
2.                static int numberOfStudents=0;   
3.                Student()   
4.                {   
5.                         numberOfStudents++;   
6.                }   
7.        }  
         每一次创建一个新的Student实例时,成员numberOfStudents都会不断的递增,并且所有的Student实例都访问同一个 numberOfStudents变量,实际上int numberOfStudents变量在内存中只存储在一个位置上。
看了毕老师的视频,结合网上的,自己总结了一下,哈哈

评分

参与人数 1技术分 +1 收起 理由
天黑偷牛 + 1 赞一个!

查看全部评分

1 个回复

正序浏览
好,不错,不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马