码迷,mamicode.com
首页 > 编程语言 > 详细

对于java的Sting.intern()的一些注意

时间:2018-09-07 22:52:24      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:环境   默认   分享   技术分享   java   字符串   image   http   font   

今天翻看书时遇到了这样一个问题,对于String.intern()方法又有了一些认识和看法。首先我们看它的api技术分享图片

大意就是intern()方法会在常量池中记录首次出现的实例引用,但是在jdk1.6中却不是这样。jdk1.6中会将首次遇到的字符串实例

复制一份放在持久代里,返回的则是永久代中对于这个字符串的引用。

如下图

技术分享图片

技术分享图片

首先,这个运行环境是jdk1.7,运行后会分别的到true和false.这里由于StringBuilder 会在java堆上创建实例,intern()方法实现不会再复制实例,

只是在常量池中记录首次出现的实例引用,所以为true.而s2返回false是因为“java”这个字符串在执行StringBuilder()方法前已经出现过,

也就是说默认的在字符串常量池中已经有它的引用,不再符合“首次出现的原则”,所以返回false.而“计算机软件”这个字符串是首次出现的,所以

返回true.细节点就是“java”字符串的引用早就有了。这里参考了《深入理解java虚拟机》这本书。希望大家可以多多交流多提意见,感谢大家的观看。

对于java的Sting.intern()的一些注意

标签:环境   默认   分享   技术分享   java   字符串   image   http   font   

原文地址:https://www.cnblogs.com/yixinli/p/9607346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!