参考资料:JDK1.6帮助文档
String intern方法是查询String pool中是否有内容相等的值,如果有,则返回String pool中得字符的引用,如果没有,则将该String置于String pool中。
我的困惑是:什么情况下,String pool会没有该String内容相同的字符呢?
1.比如: String x = "abc";则String pool中有“abc”
2. String y = new String("abc");String pool中,也是有“abc"的。
找不到一种情况,String pool中,不存在一个非空String引用没有对应的String pool的情况。
我的困惑是:什么情况下,String pool会没有该String内容相同的字符呢?
1.比如: String x = "abc";则String pool中有“abc”
2. String y = new String("abc");String pool中,也是有“abc"的。
找不到一种情况,String pool中,不存在一个非空String引用没有对应的String pool的情况。
非常量的就是,比如
StringBuilder sb = ...
sb.append('x').append('y');
String s = sb.toString();
这个s就不在pool里面
StringBuilder sb = ...
sb.append('x').append('y');
String s = sb.toString();
这个s就不在pool里面
如果你使用了
char data[] = {'a', 'b', 'c'};
String str = new String(data);
构建了一个String 对象,则在Strint pool中是没有的对应的字符串的。需要通过intern来将该对象放置与string pool中。其余直接涉及的string literal都会在string pool中有一个内容相同的。
char data[] = {'a', 'b', 'c'};
String str = new String(data);
构建了一个String 对象,则在Strint pool中是没有的对应的字符串的。需要通过intern来将该对象放置与string pool中。其余直接涉及的string literal都会在string pool中有一个内容相同的。
本文详细解析Java String intern()方法的原理、用途及常见疑惑,包括字符串池的概念、方法实现细节和实际应用场景。
257

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



