static 详解
实例变量
是一个java对象就有一个,100个对象就有100个。
实例变量存储在java对象内部,在堆内存中,在构造方法执行的时候初始化
静态变量
所有对象的该变量值一样,这种特征属于类级别的特征,可以提升为整个模版的特征,可以在变量前添加static关键字修饰
静态变量在类加载的时候初始化,不需要创建对象,内存就开辟了
静态变量存储在方法区内存当中
静态变量访问时直接用类名访问,而不用实例对象名
总结:
什么时候成员变量声明为实例变量?
- 所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化(不同的对象的这个属性具体的值不同)
什么时候成员变量声明为静态变量呢?
- 所有对象都有这个属性,并且所有对象的这个属性的值是一样的,建议定义为静态变量,节省内存的开销。
静态变量在类加载的时候初始化,内存在方法去内存中开辟/访问的时候不需要创建对象,直接使用”类名.静态变量名”的方式访问。(也可以用引用的方式访问,但是会被警告)
所有静态的数据都可以采用类名.,也可以采用引用.,但是建议采用类名.的方式访问。
采用引用.的方式访问的时候,即使引用是null,也不会出现空指针异常。因为访问静态的数据不需要对象的存在。
static关键字:
- 翻译为静态
- 修饰的方法是静态方法
- 修饰的变量是静态变量
- 所有static修饰的元素称为静态的,都可以可以采用类名.,也可以采用引用.,但是建议采用类名.的方式访问。
- static修饰的所有元素都是类级别的特征,和具体的对象无关