【面试题精讲】你了解String.intern方法吗

发布时间 2023-09-15 08:58:08作者: zysicyj

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

首发博客地址

系列文章地址


String.intern 方法是 Java 中的一个方法,它用于将字符串对象添加到字符串常量池中,并返回常量池中该字符串的引用。如果常量池中已经存在该字符串,则直接返回常量池中的引用

在 Java 中,字符串常量池是一块特殊的内存区域,用于存储字符串常量。当我们使用字面量创建字符串对象时,如果字符串常量池中已经存在相同内容的字符串,则直接返回常量池中的引用
将字符串对象添
,而不会创建新的字符串对象。这样可以节省内存空间
,并提高字符串比较的效率

使用 String.intern 方法可以手动如果字符串常量池中已经存在相同内容的字符串,则直接返回常量池中的引用将字符串对象添加到字符串常量池中。如果字符串常量池中已经存在相同内容的字符串,则返回常量池中的引用;如果字符串常量池中不存在相同内容的字符串,则将该字符串添加到常量池中,并返回常量池中的引用。

下面是一个示例代码,演示了 String.intern 方法的使用:

String str1 = new String("hello");
String str2 = "hello";
String str3 = str1.intern();

System.out.println(str1 == str2);  // false
System.out.println(str2 == str3);  // true

在上面的代码中,str1 是通过 new 关键字创建的字符串对象,它在堆内存中分配空间。str2 是使用字面量创建的字符串对象,它在字符串常量池中分配空间。str3 是通过 String.intern 方法将 str1 添加到字符串常量池中得到的引用。

通过比较引用可以看出,str1 和 str2 的引用不相同,因为它们分别指向堆内存和字符串常量池中的不同对象。而 str2 和 str3 的引用相同,因为它们都指向字符串常量池中的同一个对象。

需要注意的是,由于字符串常量池是在运行时创建的,因此在使用 String.intern 方法时需要谨慎使用,以避免过多的字符串对象被添加到常量池中,导致内存占用过大。

如果您喜欢我的内容,就点击关注吧

扫码长按关注交流群获取最新消息,免费的面试题手册即将在交流群内推出

公众号

个人微信

本文由mdnice多平台发布