java筑基–static关键字理解再进阶,实例变量和静态变量在内存的区别
一. JVM内存结构(5个区域)
- 堆:new创建的实例对象,属于动态分配。
- 方法区:静态,常量,永久引用,static修饰的。
- java栈,虚拟机栈,基本数据类型和对象引用。
- 本地方法栈:Native方法。
- 程序计数器:执行的位置。
二. 代码示例
public class UserDemo {
private String name;
private String id;
private static String sex = "男";
public UserDemo(String name, String id) {
this.name = name;
this.id = id;
}
public static void main(String[] args) {
System.out.println(UserDemo.sex);
UserDemo xiaohoong = new UserDemo("xiaohoong", "111");
System.out.println(xiaohoong.id);
System.out.println(xiaohoong.name);
UserDemo xiaoming = new UserDemo("xiaoming", "222");
System.out.println(xiaoming.id);
System.out.println(xiaoming.name);
}
}
根据这段代码分析一下实例变量和静态变量在内存中的区别。