Java学习笔记——静态变量/类变量详解(使用细节及内存分析)

静态变量/类变量的使用细节

定义语法:访问修饰符 static 数据类型变量名;static 访问修饰符数据类型 变量名;
访问方法:对象名.类变量名;或者类名.类变量名;(Java设计者推荐使用在这个方式)

使用细节:

  • 由于类加载时会在堆中创建一个对应的Class对象,也即类变量是随着类的加载而创建的,所以没有创建对象时也能访问。
  • 静态变量的访问修饰符的访问权限和范围和普通属性是一样的。
  • 类变量与实例变量(普通属性)的区别在于,类变量是该类的所有对象共享的,而实例变量是每个对象独享的。
  • 类变量的生命周期是随类的加载开始,随着类消亡而销毁。

静态变量/类变量的内存布局

静态变量存储的位置与JDK版本有关系
静态变量存储于静态域,对于JDK7之前的版本,静态域在方法区
而对于JDK7以上版本,静态域存储于定义类型的Class对象(反射机制里的内容?暂时没学过)中的尾部,而Class对象存在中。

你可能感兴趣的:(java,学习,笔记)