我知道当我们创建字符串文字时,它会放在永久代空间中。我的问题是,即使该字符串文字只在方法中使用,它是否会一直存在于jvm的生命周期中。例如,我有以下代码片段:
现在我从主方法中调用了以下内容:
private static void testString1(){
String str1="tetingLiteral";
}
private static void testString2(){
String str2="tetingLiteral";
}
现在我从主方法中调用了以下内容:
testString1();
testString12();
str1和str2会引用同一块内存位置。
我的理解是,它们将引用同一块内存位置(即使在方法内创建字符串常量,它也会在jvm生命周期内保留在那里)。但是我仍然想确认一下,因为我无法通过编程方式检查它,因为没有办法打印字符串内存位置。
System.identityHashCode
尽可能为每个不同的对象返回不同的值。 - Patricia Shanahan