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

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

相关推荐
心态与习惯1 小时前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较
一叶飘零_sweeeet1 小时前
优秀文章合集
java
zopple1 小时前
ThinkPHP5.x与3.x核心差异解析
java·python·php
南境十里·墨染春水2 小时前
C++ 笔记 thread
java·开发语言·c++·笔记·学习
南境十里·墨染春水2 小时前
C++ 笔记 高级线程同步原语与线程池实现
java·开发语言·c++·笔记·学习
阿巴斯甜2 小时前
Predicate的使用:
java
阿巴斯甜2 小时前
Supplier的使用:
java
阿巴斯甜2 小时前
Function 用法:
java
做个文艺程序员3 小时前
流式输出(SSE)在 Spring Boot 中的实现【OpenClAW + Spring Boot 系列 第3篇】
java·spring boot·后端
逻辑驱动的ken3 小时前
Java高频面试考点场景题09
java·开发语言·数据库·算法·oracle·哈希算法·散列表