变量分类-进阶
# 静态变量
静态变量可以被类的所有实例共享,无论一个类创建了多少个对象,它们都共享同一份静态变量。也就是说,静态变量只会被分配一次内存,即使创建多个对象,这样可以节省内存。
静态变量创建方式:创建变量时,用 static
关键字修饰。
静态变量在方法区;局部变量在栈内存;实例变量在堆内存
# 变量分类
中文术语 | 英文术语 | 描述 | 存储位置 |
---|---|---|---|
实例变量 | Instance Variables | 直接定义在类中的非 static 变量,每个类的实例都有一份独立的副本。 | 堆内存 |
静态变量(类变量) | Class Variables | 定义为 static,属于类本身,而不是类的任何对象。所有实例共享这同一内存区域。 | 方法区 |
局部变量 | Local Variales | 在方法内部定义的变量,只在方法执行期间存在。 | 栈内存 |
其中静态变量和实例变量合称为成员变量
# 内存英文单词
堆内存、栈内存和方法区在英文中的对应术语分别是:
堆内存:Heap Memory
栈内存:Stack Memory
方法区:Method Area,曾被称为永久代(PermGen),从 Java 8 开始,叫做元空间(Metaspace)。冷门一点的,叫“非堆内存”(Non-Heap Memory)