Posted on 2006-12-04 10:22
itVincent 閱讀(543)
評(píng)論(1) 編輯 收藏 所屬分類:
Java基礎(chǔ)
在CSDN上看到個(gè)String的問(wèn)題,趁機(jī)會(huì)自己總結(jié)一下,問(wèn)題是這樣的:
String a = "JAVA";
String b = "JAVA";
String c = new String("JAVA");
String d = "JA";
String e = "VA";
String f = "JA"+"VA";
String g = d+e;
String h = c;
System.out.println(a==b);//TRUE
System.out.println(a==c);//FALSE
System.out.println(a==f);//TRUE
System.out.println(a==g);//FALSE
System.out.println(c==f);//FALSE
System.out.println(c==g);//FALSE
System.out.println(c==h);//TRUE
//為什么a==g是FALSE呢?
下面逐一的說(shuō):
System.out.println(a==b);//TRUE?? 通過(guò)String str=""這種方式獲得的相同內(nèi)容的String指向同一個(gè)intern對(duì)象,不會(huì)重復(fù)創(chuàng)建新的對(duì)象
??????
System.out.println(a==c);//FALSE? 通過(guò)new String()方式生成的是一個(gè)新的對(duì)象,可通過(guò)intern()方法指向同一個(gè)intern對(duì)象
System.out.println(a==f);//TRUE??? ?"JA"+"VA";會(huì)在編譯期換為"JAVA"
System.out.println(a==g);//FALSE d+e后,是新的String了,不會(huì)在編譯期完成
System.out.println(c==f);//FALSE 這個(gè)很簡(jiǎn)單,地球人都知道
System.out.println(c==g);//FALSE 這個(gè)很簡(jiǎn)單,地球人都知道
System.out.println(c==h);//TRUE 這個(gè)很簡(jiǎn)單,地球人都知道
?