假设我创建了一个像
这样的String对象String st = new String("newOBject");
和另一个
String str = "secondObject";
现在我的问题是我将如何确认String literal创建的对象是否在String池中创建,而使用new operator创建的对象是否在堆内存中创建。有没有任何方法可以进入内存并告诉我们它的位置
答案 0 :(得分:0)
虽然没有直接查看字符串的内存,但您可以执行以下操作:
boolean isStringInPool(String stringToCheck){
String test = new String(stringToCheck);
test = test.intern();
return stringToCheck == test;
}
那就是在堆上创建一个具有相同值的String,实习它(强制它在池中),并比较引用(仅当两者都在池中时才返回true)