行业资讯 2025年08月6日
0 收藏 0 点赞 901 浏览 1230 个字
摘要 :

文章目录 1.什么是字符串常量池? 2. 字符串文字和对象 3. String.intern()方法 4.结论 Java 中的String.intern ()返回字符串池中存在的相等字符串文字的引用。如果字……




  • 1.什么是字符串常量池?
  • 2. 字符串文字和对象
  • 3. String.intern()方法
  • 4.结论

Java 中的String.intern ()返回字符串池中存在的相等字符串文字的引用。如果字符串池中存在现有字符串文字,则返回其引用。否则,创建一个具有相同内容的新字符串,并返回新字符串的引用。

请注意,在内部,字符串相等性是使用String.equals()方法检查的。

1.什么是字符串常量池?

字符串常量池是堆内存中的保留内存区域,Java 用于存储字符串常量。请注意,Java 字符串默认是不可变的。

Java 在字符串池中存储每个不同字符串值的且仅一份副本。它有助于在程序执行期间重用字符串以节省内存。正在运行的程序中可能会有很多对某个字符串的引用,但字符串池中只会有一份字符串的副本。

2. 字符串文字和对象

在Java中,我们可以通过两种方式创建字符串。第一种方法是创建字符串文字,第二种方法是使用new关键字创建 String 对象。

String str1 = \"hello world\";  //String 字面量

String str2 = new String(\"hello world\");  //String 对象
  • 当我们使用文字创建字符串时(也是推荐的),字符串文字总是直接创建到字符串池中。
  • 当我们使用new关键字创建字符串时,该字符串将在普通堆内存中创建。

Java String intern()方法

3. String.intern()方法

String.intern ()是一个本机方法,它返回对字符串池中存在的相等字符串文字的引用。请注意,所有字符串文字都会在字符串池中自动创建,因此intern()方法对于使用new关键字创建的String对象很有用。

下面的程序中,name变量包含了对堆中String对象的引用。当我们调用intern()时,会在字符串池中创建一个内容为“Alex”的新字符串文字。变量str包含对池中创建的字符串文字的引用。

String strObject = new String(\"Alex\");
String strLiteral = strObject.intern();

Assertions.assertFalse(strObject == strLiteral);   //指向不同的对象

Assertions.assertTrue(strObject.equals(strLiteral));  //相同内容值

Java String intern()方法

任何使用相同内容创建的新字符串文字都将指向字符串池中的对象。

String newLiteral = \"Alex\";

Assertions.assertTrue(strLiteral == newLiteral);

通常,任何两个字符串 s1 和 s2,s1.intern() == s2.intern()当且仅当s1.equals(s2)为true时才为true。

4.结论

在本 Java 教程中,我们学习了如何实习字符串,以及字符串文字与字符串对象有何不同。String.intern ()是本机实现的方法,提供非常高的性能。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9167.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号