java筑基--static关键字理解再进阶,实例变量和静态变量在内存的区别

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);
    }
}

根据这段代码分析一下实例变量和静态变量在内存中的区别。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46039528/article/details/130566070