Java字符串池用于保存String对象并共享使用,提高效率。它存在于JVM中,由String类维护。涉及字符串池访问的几个例子:
[Case1]
String str = "abc";
将字符串常量(以编译时是否能够确定值为准,也可以是编译时能确定值的常量String引用以及它们做"+"运算的结果)"abc"赋值给String引用变量str时,检查字符串池中是否存在以"abc"为值的对象(通过String.equals()方法判断):
如果存在则返回该对象的引用;
否则以"abc"为值创建一个新的String对象放入字符串池中,然后将该对象的引用赋值给str。
[Case2]
String str;
...
str.intern();
调用intern()方法时,检查字符串池中是否已存在与str所指对象值相同的对象:
如果则返回该对象的引用;
否则新建一个与str所指对象值相同的对象加入字符串池中,返回新建对象的引用。
[Case End]
所以编程时,尽可能使用字符串常量可以提高效率。