JavaSE程序分析004 JVM常量池的小事情
来源:互联网 发布:淘宝整点秒杀怎么设置 编辑:程序博客网 时间:2024/04/30 21:15
public class TestConstantPool { /** * 本段程序在jdk1.7和jdk1.6上运行结果是不一样的 * jdk1.7运行结果如下: * true * false * jdk1.6运行结果如下: * false * false * 原因: * 从jdk1.7开始,常量池就放入到堆空间中了,以前是在方法区。 * jdk1.6中intern()方法会把首次遇到的字符串实例复制到常量池中,返回的结果也是常量池中的字符串的引用, * 而StringBuffer创建的字符串是在堆上面,所以必然不是同一个引用,返回false。 * 在jdk1.7中,intern()方法不再复制实例,常量池中只保存首次出现的实例的引用, * 因此intern()方法返回的引用和由StringBuffer创建的字符串实例是同一个。 * 为什么str2比较返回false呢?这是因为jvm中内部在加载类的时候,就已经有"class"这个字符串了, * 不符合"首次出现"的原则,因此返回false。 * @param args */ public static void main(String[] args) { String str1 = new StringBuffer("kang").append("k").toString(); System.out.println(str1.intern() == str1); String str2 = new StringBuffer("clas").append("s").toString(); System.out.println(str2.intern() == str2); }}
0 0
- JavaSE程序分析004 JVM常量池的小事情
- JavaSE程序分析001 继承的小事情
- JavaSE程序分析005 Integer的小事情
- JavaSE程序分析002 try-catch-finally与return的小事情
- JavaSE程序分析003 静态代码块与构造代码块的小事情
- jvm的常量池
- JVM的常量池
- jvm的常量池
- 如何发布javaSE写的小程序
- jvm虚拟机运行时内存分析,堆,栈,方法区,程序计数器,本地栈,常量池
- JavaSE小程序supermaket
- JavaSE:常量,变量的认识
- JVM常量池及字符串“==”比较分析
- JVM常量池及字符串==比较分析
- JVM常量池及字符串==比较分析
- JVM 常量池理解
- JVM常量池
- jvm常量池
- poi读取Excel总结
- java 二分查找算法
- int const *p与int *const p区别
- 使用渲染纹理的制作摄像头
- java设计模式—分类
- JavaSE程序分析004 JVM常量池的小事情
- 并查集的使用及其实现
- 微信支付集成简介
- linux怎样使用top命令查看系统状态
- 原生JS实现漂浮广告的一种方法(Demo)
- Ajax-load
- HTML5基础加强css样式篇(css过度效果:界面的浮层遮罩和消失)(十九)
- python __slots__ 使你的代码更加节省内存
- buildroot认知