Java字符串处理全解析
1. 字符串池(String Pool)
Java为了减少内存使用和提高性能,维护了一个字符串字面量池。当程序中出现字符串字面量时,Java会在字符串池中查找是否有相同内容的字符串对象:
- 如果没有找到匹配项,Java会创建一个新的字符串对象并将其添加到字符串池中,然后用该对象的引用替换字符串字面量。
- 如果找到匹配项,Java会直接用池中对象的引用替换字符串字面量。
例如:
String str1 = new String("Hello");
当Java遇到字符串字面量 “Hello” 时,会先在字符串池中查找。若池中没有 “Hello” 对象,会创建一个并添加到池中,同时由于使用了 new 操作符,还会在堆上创建另一个字符串对象,所以此语句会创建两个字符串对象。
再看以下代码:
String str1 = new String("Hello");
String str2 = new String("Hello");
假设执行第一条语句时,”Hello” 不在字符串池中,第一条语句会创建两个字符串对象。执行第二条语句时,字符串字面量 “Hello” 已在池中,会用池中对象的引用替换,但由于使用了 new 操作符,Java会再创建一个新的字符串对象。所以这两条语句共创建三个字符串对象;若开始执行时 “Hello” 已在池中,则只创建两个字符串对
Java字符串处理全解析与最佳实践
超级会员免费看
订阅专栏 解锁全文
2059

被折叠的 条评论
为什么被折叠?



