Java中字符串池的底层机制?
我很好奇为什么字符串可以在不调用的情况下创建,因为API提到它是一个new String()
Object
class
java.lang.String
那么我们如何能够使用而不是?String s="hi"
String s=new String("hi")
这篇文章澄清了运算符的使用和缺少,并说这是由于文字被禁留或从文字池中获取,因此是不可变的。==
new
String
JVM
Strings
在看到诸如
String s="hi"
第一次真正发生了什么?
是否像这样替换它,其中创建一个对象并将其添加到字符串文本池中,因此后续调用(例如从池中获取)?
JVM
String s=new String("hi")
"hi"
String s1="hi"
-
底层机制就是这样运作的吗?如果是这样,则
String s=new String("Test"); String s1="Test";
与
String s="Test"; String s1="Test";
在内存利用率和效率方面?
另外,有没有办法让我们访问字符串池来检查其中存在多少个文本,占用了多少空间等?
String