检查String的对象内存分配

时间:2017-10-05 09:32:29

标签: java string

假设我创建了一个像

这样的String对象
String st = new String("newOBject");

和另一个

String str = "secondObject";

现在我的问题是我将如何确认String literal创建的对象是否在String池中创建,而使用new operator创建的对象是否在堆内存中创建。有没有任何方法可以进入内存并告诉我们它的位置

1 个答案:

答案 0 :(得分:0)

虽然没有直接查看字符串的内存,但您可以执行以下操作:

boolean isStringInPool(String stringToCheck){
    String test = new String(stringToCheck);
    test = test.intern();
    return stringToCheck == test;
}

那就是在堆上创建一个具有相同值的String,实习它(强制它在池中),并比较引用(仅当两者都在池中时才返回true)