聽聽聽聽涓夈佸瓧絎︿覆瀵硅薄鐨勫垱寤?鐢變簬瀛楃涓插璞$殑澶ч噺浣跨敤[瀹冩槸涓涓璞★紝涓鑸岃█瀵硅薄鎬繪槸鍦╤eap鍒嗛厤鍐呭瓨]錛孞ava涓負浜嗚妭鐪佸唴瀛樼┖闂村拰榪愯鏃墮棿[濡傛瘮杈冨瓧絎︿覆鏃訛紝==姣攅quals()蹇玗錛屽湪緙栬瘧闃舵灝辨妸鎵鏈夌殑瀛楃涓叉枃瀛楁斁鍒頒竴涓枃瀛楁睜[pool of literal strings]涓紝鑰岃繍琛屾椂鏂囧瓧姹犳垚涓哄父閲忔睜鐨勪竴閮ㄥ垎銆傛枃瀛楁睜鐨勫ソ澶勶紝灝辨槸璇ユ睜涓墍鏈夌浉鍚岀殑瀛楃涓插父閲忚鍚堝茍錛屽彧鍗犵敤涓涓┖闂淬傛垜浠煡閬擄紝瀵逛袱涓紩鐢ㄥ彉閲忥紝浣跨敤==鍒ゆ柇瀹冧滑鐨勫糩寮曠敤]鏄惁鐩哥瓑錛屽嵆鎸囧悜鍚屼竴涓璞★細
String s1 = "abc" ; String s2 = "abc" ; if( s1 == s2 ) 聽聽聽聽System.out.println("s1,s2 refer to the same object"); else聽聽聽聽 System.out.println("trouble");
聽聽聽聽榪欓噷鐨勮緭鍑烘樉紺猴紝涓や釜瀛楃涓叉枃瀛椾繚瀛樹負涓涓璞°傚氨鏄錛屼笂闈㈢殑浠g爜鍙湪pool涓垱寤轟簡涓涓猄tring瀵硅薄銆?br /> 聽聽聽聽鐜板湪鐪婼tring s = new String("abc");璇彞錛岃繖閲?abc"鏈韓灝辨槸pool涓殑涓涓璞★紝鑰屽湪榪愯鏃舵墽琛宯ew String()鏃訛紝灝唒ool涓殑瀵硅薄澶嶅埗涓浠芥斁鍒癶eap涓紝騫朵笖鎶奾eap涓殑榪欎釜瀵硅薄鐨勫紩鐢ㄤ氦緇檚鎸佹湁銆俹k錛岃繖鏉¤鍙ュ氨鍒涘緩浜?涓猄tring瀵硅薄銆?br />
String s1 = new String("abc") ; String s2 = new String("abc") ; if( s1 == s2 ){ //涓嶄細鎵ц鐨勮鍙
涓夈佸瓧絎︿覆杞崲鐨勪紭鍖?br /> 鎸夌収涓婅堪璇存硶錛宻tr = 1+2+str+3+4;璇彞浼間箮搴旇灝卞簲璇ョ敓鎴?涓猄tring瀵硅薄錛?br /> 1+2 錛?錛宼hen 3鈫捍nteger(3)鈫?3" in pool? [鍋囪濡傛] "3"+str(in heap) = "3jf"聽聽聽聽 (in heap) "3jf" +3 ,first 3鈫捍nteger(3)鈫?3" in pool? [鍒欎笉鍒涘緩] then "3jf3" "3jf3"+4 create "4"聽聽in pool then "3jf34"
聽聽聽聽榪欓噷鎴戝茍涓嶆竻妤?銆?杞崲鎴愬瓧絎︿覆鍚庢槸鍚﹀湪姹犱腑錛屾墍浠ヤ笂榪扮粨鏋滀粛鐒舵槸鐚滄祴銆?br /> 聽聽聽聽涓轟簡鍑忓皯鍒涘緩涓棿榪囨浮鎬х殑瀛楃涓插璞★紝鎻愰珮鍙嶅榪涜涓叉帴榪愮畻鏃剁殑鎬ц兘錛宎 Java compiler鍙互浣跨敤StringBuffer鎴栬呯被浼肩殑鎶鏈紝鎴栬呮妸杞崲涓庝覆鎺ュ悎騫舵垚涓姝ャ備緥濡傦細瀵逛簬 a + b + c 錛孞ava緙栬瘧鍣ㄥ氨鍙互灝嗗畠瑙嗕負[as if]
聽聽聽聽鍙錛宻tr1涓巗tr2鎸囧悜鍚屼竴涓璞★紝榪欎釜瀵硅薄鍦╬ool涓傛墍鏈夐伒寰狫ava Language Spec鐨勭紪璇戝櫒閮藉繀欏誨湪緙栬瘧鏃跺constant expressions 榪涜綆鍖栥侸LS瑙勫畾錛歋trings computed by constant expressions (ý15.28) are computed at compile time and then treated as if they were literals.
聽聽聽聽涓嶅彉綾葷殑鍏抽敭鏄紝瀵逛簬瀵硅薄鐨勬墍鏈夋搷浣滈兘涓嶅彲鑳芥敼鍙樺師鏉ョ殑瀵硅薄[鍙闇瑕侊紝灝辮繑鍥炰竴涓敼鍙樹簡鐨勬柊瀵硅薄]銆傝繖灝變繚璇佷簡瀵硅薄涓嶅彲鏀瑰彉銆備負浠涔堣灝嗕竴涓被璁捐鎴愪笉鍙樼被錛熸湁涓涓狾OD璁捐鐨勫師鍒欙細Law of Demeter銆傚叾騫夸箟瑙h鏄細