java - String常量池的自引用

标签 java string

我读到字符串常量池是自引用的也在 this 中链接它被写成字符串文字的创建:

String s= "new";

如果没有,将在堆中创建一个新的字符串“new”。 那么是否意味着对象总是在堆中创建,无论其字面量还是使用 new 关键字的新对象?

我对 intern 的理解是——它检查堆中是否有同名对象,然后引用它,否则在堆中创建新对象。 如果我在这里错了,请更正。

我的另一个疑问是 - 常量池是否包含对象或仅包含对堆中对象的引用。

最佳答案

does it mean that object is always created in the heap regardless its literal or new object using new keyword?

是的,在 Java 中,所有 Object 派生的对象,包括 String,都是在堆中创建的。唯一的区别是常量池中相同的 String 对象在编译器的帮助下得到重用,而使用运算符 new 创建的 String 对象需要程序员的显式代码,以便重用。

关于java - String常量池的自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29050385/

相关文章:

java - 如何从字符串列表中找到最长的公共(public)后缀并在java中返回结果后缀长度?

javascript - 从对象内部的字符串调用函数?

java - 请纠正我这一点,这很令人困惑

java - 使用 Java Stream API 逐行写出文本的更好方法?

java - 我的 Hangman 代码不会立即记录错误的猜测,而是打印双下划线等等

python - 从 txt 文件中删除一些词替换一些其他词

C - 从未知长度的字符串中复制最后一个字符

java - 在java中对字符串进行排序

Java 8 类的数组的数组的流转换

java - 在 Java 中处理多个时区