个人对常量池的一点理解

首先我对虚拟机了解的不是很深, 说的不对请指正

1.JVM内存分布

在这里插入图片描述

2.常量池

在这里插入图片描述
字符串(数字)字面量存在于常量池,常量池在class文件中,之后JVM会将常量池载入内存,并保存在方法区。
tip1: 编译器生成class文件,那么常量池也是编译器生成的啦。

tip2: 再复习下class文件与加载
Java编译器编译Java文件之后产生.class 文件。class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象


String a = "abc";
String b = new String("abc");
System.out.println(a==b);

So, 我们现在知道了为什么代码执行结果为false.
因为 a 指向的是常量池的字符串,而常量池在方法区
b指向虚拟机堆中新建的对象
他们指向的是不同的内存区域

——>这篇博客讲得更深入一些

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值