String intern()方法

String intern 方法有什么作用?

String.intern() 是一个 native(本地)方法,其作用是将指定的字符串对象的引用保存在字符串常量池中,并返回常量池中对应的字符串引用。

当使用字面量创建字符串时,Java 会在编译期间自动将其添加到字符串常量池中。而使用 new String() 创建的字符串对象则会在堆中创建,不会自动添加到常量池中。

通过调用 intern() 方法可以手动将字符串对象添加到常量池中,可以简单分为两种情况:

  1. 如果字符串常量池中保存了对应的字符串对象的引用,就直接返回该引用。
  2. 如果字符串常量池中没有保存了对应的字符串对象的引用,那就在常量池中创建一个指向该字符串对象的引用并返回。

使用 intern() 方法可以带来如下的好处:

  1. 节省内存:由于常量池中的字符串是唯一的,因此可以共享使用。使用 intern() 方法可以避免重复创建相同值的字符串对象,从而节省内存空间。

  2. 提高字符串比较效率:由于字符串常量池中的字符串是唯一的,使用引用比较两个字符串的相等性会比使用值比较更高效。通过将字符串对象添加到常量池中,可以通过引用比较来判断字符串的相等性,提高比较效率。

需要注意的是,在常规的开发中,并不需要频繁地使用 intern() 方法,因为字符串常量池有一定的开销。只有在需要明确使用字符串常量池的特性时,或者在处理大量字符串时需要优化内存和比较效率时,才需要使用 intern() 方法。

示例代码(JDK 1.8) :

复制代码
// 在堆中创建字符串对象"Java"
// 将字符串对象"Java"的引用保存在字符串常量池中
String s1 = "Java";
// 直接返回字符串常量池中字符串对象"Java"对应的引用
String s2 = s1.intern();
// 会在堆中在单独创建一个字符串对象
String s3 = new String("Java");
// 直接返回字符串常量池中字符串对象"Java"对应的引用
String s4 = s3.intern();
// s1 和 s2 指向的是堆中的同一个对象
System.out.println(s1 == s2); // true
// s3 和 s4 指向的是堆中不同的对象
System.out.println(s3 == s4); // false
// s1 和 s4 指向的是堆中的同一个对象
System.out.println(s1 == s4); //true

更多消息资讯,请访问昂焱数据

相关推荐
卷毛的技术笔记16 分钟前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥16 分钟前
匿名函数 lambda + 高阶函数
java·python·算法
東雪木31 分钟前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
adrninistrat0r36 分钟前
Java调用链MCP分析工具
java·python·ai编程
噜噜噜阿鲁~1 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
春生野草2 小时前
反射、Tomcat执行
java·开发语言
_日拱一卒2 小时前
LeetCode:207课程表
java·数据结构·算法·leetcode·职场和发展
飞翔中文网2 小时前
Java学习笔记之抽象类与接口(设计思想)
java·笔记·学习
qcx233 小时前
【系统学AI】09 Multi-Agent架构(2026版):从学术理论到工业级实践
java·人工智能·架构·multi-agent·claude agent
半旧夜夏3 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器