java - java中String.intern()的用途

标签 java

任何人都知道使用 java 编程的 String.intern() 的目的...

如果我使用 intern 普通字符串和 string.intern() 有什么区别

最佳答案

内部字符串存储在字符串池中,而不是一般的堆空间中。在 Java 7 之前,此池位于永久代区域中,但从 Java 7 开始,它已移至堆中,以防止导致 JVM 崩溃的 java.lang.OutOfMemoryError: PermGen space 错误。

总结具有相同文本的内部字符串(.equals() 返回 true)将指向字符串池中的相同对象,即即使 == 操作也会给出 true。使用 new() 创建的具有相同内容(.equals() 返回 true)的普通字符串将为 == 操作提供 false,因为它们指向两个不同的对象。

您可能想阅读一篇好文章Busting java.lang.String.intern() Myths 。我相信它会消除您的大部分疑虑(文章还包含您可以自己执行以查看结果的 Java 示例)。

关于java - java中String.intern()的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20512817/

相关文章:

java - 在另一个类中获取 Android Volley 响应

java - 如何在文件管理器中隐藏系统保护的文件

java - img 标签图像未在 Chrome 中加载

java - 在 Java 中读取文件会抛出 `NullPointerException`

java - Android - 使联系人在手机上不可编辑

java - 在哪里可以找到更多 GWT webappcreator 模板?

java - 如何在 HQL 中获取多对一映射数据

java - 相当于00000000字节的字符是什么?

java - Android Studio Flamingo 出现“compileDebugJavaWithJavac”错误

java - 用于将值插入 Db 的字符串格式