黑马程序员技术交流社区
标题:
String Pool的应用
[打印本页]
作者:
海中的游弋草
时间:
2011-12-20 13:30
标题:
String Pool的应用
本帖最后由 海中的游弋草 于 2011-12-20 18:09 编辑
public class ObjectTest2
{
public static void main(String[] args)
{
Object object = new Object();
Object object2 = new Object();
System.out.println(object == object2);//false
System.out.println("----------------");
String str = new String("aaa");
String str2 = new String("aaa");
System.out.println(str == str2);//false
System.out.println("----------------");
String str3 = "bbb";
String str4 = "bbb";
System.out.println(str3 == str4);//true
System.out.println("----------------");
String str5 = new String("ccc");
String str6 = "ccc";
System.out.println(str5 == str6);//false
System.out.println("----------------");
String s = "hello";
String s1 = "hel";
String s2 = "lo";
System.out.println(s == s1 + s2);//false ---这里结果为什么为false
System.out.println("----------------");
System.out.println(s == "hel" + "lo");//true ---这里结果为什么为true
给一个比较详细的解释????
}
}
作者:
郭繁森
时间:
2011-12-20 13:44
String pool 就是String 池,也就是内存的 Data segment 区,专放静态变量和字符串的区,
比如:
String a="Hello";
那么字符串"Hello"就放在 String pool 中,如果是 String a = new String("Hello"),那么就放在内存的heap(堆)里面
String str1="asd";
String str2="asd";
结果是str1==str2
因为String str1="asd";先会检查String pool中是否有asd这个字符串,若存在不必另外划分区间str2直接引用str1,这样能节省存储的空间
作者:
海中的游弋草
时间:
2011-12-20 15:58
恩 明白!原来string中有一个String 池! 谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2