Java7之后的intern
2022/4/22 1:12:38
本文主要是介绍Java7之后的intern,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近在《深入理解Java虚拟机》一书中了解到,以下内容在Java7中第一个返回true,第二个返回false,产生了一些疑惑,经过一番搜索,对intern的理解有所加深,这里记一下。
public class RuntimeConstantPoolOOM { public static void main(String[] args) { String str1 = new StringBuilder("计算机").append("软件").toString(); System.out.println(str1.intern() == str1); String str2 = new StringBuilder("ja").append("va").toString(); System.out.println(str2.intern() == str2); } }
很久前就知道intern会在常量池中创建常量,但是第一个为什么是true?
回过头来再去了解intern,原来在java7之后,intern方法在第一次将字符串加入常量池的时候,是以当前对象作为常量放进的常量池的。
因此,str1的intern被调用的时候,str1本身已经被放进了常量池,因此第一个是true
第二个是因为java这个字符串在java7中其它地方出现过,不满足第一次出现的条件。
参考:
https://www.zhihu.com/question/51102308
https://blog.csdn.net/weixin_44201525/article/details/120897052
看到一个图不错:
转自:https://www.csdn.net/tags/OtTaYgxsMDg0NDktYmxvZwO0O0OO0O0O.html
这篇关于Java7之后的intern的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?