String常量池的自引用

时间:2015-03-14 15:05:36

标签: java string

我读到字符串常量池是自引用的同样在this链接中它被写为String literal的创建:

String s= "new";

将创建一个新的String" new"在堆中如果没有一个。 那么它是否意味着始终在堆中创建对象,无论其文字或新对象使用新关键字?

我对实习生的理解是 - 它检查堆中是否有一个具有相同名称的对象然后引用它,否则在堆中创建新对象。 如果我错了,请纠正。

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

2 个答案:

答案 0 :(得分:3)

  

是否意味着始终在堆中创建对象,无论其文字或新对象使用新关键字?

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

答案 1 :(得分:0)

它在堆上。

并且对于实习生()

你是对的。