String理解


public static void main(String[] args) { String a = "a1"; String b = "a" + 1; System.out.println(a == b); }

  • public static void main(String[] args) {
    		String a = "ab";
    		String bb = "b";
    		String b = "a" + bb;
    		System.out.println(a == b);
    	}

  • public static void main(String[] args) {
    		String a = "ab";
    		final String bb = "b";
    		String b = "a" + bb;
    		System.out.println(a == b);
    	}

  • public static void main(String[] args) {
    		String a = "ab";
    		final String bb = getBB();
    		String b = "a" + bb;
    		System.out.println(a == b);
    	}
    
    	private static String getBB() {
    		return "b";
    	}

  • private static String a = "ab";
    
    	public static void main(String[] args) {
    		String s1 = "a";
    		String s2 = "b";
    		String s = s1 + s2;
    		System.out.println(s == a);
    		System.out.println(s.intern() == a);
    	}

  • private static String a = new String("ab");
    
    	public static void main(String[] args) {
    		String s1 = "a";
    		String s2 = "b";
    		String s = s1 + s2;
    		System.out.println(s == a);
    		System.out.println(s.intern() == a);
    		System.out.println(s.intern() == a.intern());
    	}

    答案解析:

    String對象的存儲?

    String x = "abc"; String y = new String("abcd");


    可以看出,x與y存在棧中娇斩,它們保存了相應(yīng)對象的引用。第一條語句沒有在堆中分配內(nèi)存孕索,而是將“abc”保存在常量池中甩牺。對于第二條語句嘲碱,同樣會在常量池中有一個“abcd”的字符串窖逗,當(dāng)new時址否,會拷貝一份該字符串存放到堆中,于是y指向了堆中的那個“abcd”字符串

    1.當(dāng)兩個字符串字面值連接時(相加)碎紊,得到的新字符串依然是字符串字面值佑附,保存在常量池中

    2.當(dāng)字符串字面值與String類型變量連接時,得到的新字符串不再保存在常量池中仗考,而是在堆中新建一個String對象來存放音同。很明顯常量池中要求的存放的是常量,有String類型變量當(dāng)然不能存在常量池中了秃嗜。字符串字面值與String類型常量連接瘟斜,得到的新字符串依然保存在常量池中。

    3.final String bb = getBB();其實與final String bb = new String(“b”);是一樣的痪寻。也就是說return “b”會在堆中創(chuàng)建一個String對象保存”b”,雖然bb被定義成了final虽惭∠鹄啵可見并非定義為final的就保存在常量池中,很明顯此處bb常量引用的String對象保存在堆中芽唇,因為getBB()得到的String已經(jīng)保存在堆中了顾画,final的String引用并不會改變String已經(jīng)保存在堆中這個事實。

    4.返回字符串對象的規(guī)范化表示形式匆笤。 一個初始為空的字符串池研侣,它由類 String 私有地維護。

    當(dāng)調(diào)用 intern 方法時炮捧,如果池已經(jīng)包含一個等于此 String 對象的字符串(用 equals(Object) 方法確定)庶诡,則返回池中的字符串。否則咆课,將此 String 對象添加到池中末誓,并返回此 String 對象的引用。
    
    它遵循以下規(guī)則:對于任意兩個字符串 s 和 t书蚪,當(dāng)且僅當(dāng) s.equals(t) 為 true 時喇澡,s.intern() == t.intern() 才為 true。
    
    所有字面值字符串和字符串賦值常量表達式都使用 intern 方法進行操作殊校。
  • 最后編輯于
    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
    • 序言:七十年代末晴玖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呕屎,老刑警劉巖让簿,帶你破解...
      沈念sama閱讀 216,651評論 6 501
    • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榨惰,居然都是意外死亡拜英,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
      沈念sama閱讀 92,468評論 3 392
    • 文/潘曉璐 我一進店門琅催,熙熙樓的掌柜王于貴愁眉苦臉地迎上來居凶,“玉大人,你說我怎么就攤上這事藤抡∠辣蹋” “怎么了?”我有些...
      開封第一講書人閱讀 162,931評論 0 353
    • 文/不壞的土叔 我叫張陵缠黍,是天一觀的道長弄兜。 經(jīng)常有香客問我,道長瓷式,這世上最難降的妖魔是什么替饿? 我笑而不...
      開封第一講書人閱讀 58,218評論 1 292
    • 正文 為了忘掉前任,我火速辦了婚禮贸典,結(jié)果婚禮上视卢,老公的妹妹穿的比我還像新娘。我一直安慰自己廊驼,他們只是感情好据过,可當(dāng)我...
      茶點故事閱讀 67,234評論 6 388
    • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妒挎,像睡著了一般绳锅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酝掩,一...
      開封第一講書人閱讀 51,198評論 1 299
    • 那天鳞芙,我揣著相機與錄音,去河邊找鬼庸队。 笑死积蜻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彻消。 我是一名探鬼主播竿拆,決...
      沈念sama閱讀 40,084評論 3 418
    • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宾尚!你這毒婦竟也來了丙笋?” 一聲冷哼從身側(cè)響起谢澈,我...
      開封第一講書人閱讀 38,926評論 0 274
    • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎御板,沒想到半個月后锥忿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
      沈念sama閱讀 45,341評論 1 311
    • 正文 獨居荒郊野嶺守林人離奇死亡怠肋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
      茶點故事閱讀 37,563評論 2 333
    • 正文 我和宋清朗相戀三年敬鬓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笙各。...
      茶點故事閱讀 39,731評論 1 348
    • 序言:一個原本活蹦亂跳的男人離奇死亡钉答,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杈抢,到底是詐尸還是另有隱情数尿,我是刑警寧澤,帶...
      沈念sama閱讀 35,430評論 5 343
    • 正文 年R本政府宣布惶楼,位于F島的核電站右蹦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏歼捐。R本人自食惡果不足惜何陆,卻給世界環(huán)境...
      茶點故事閱讀 41,036評論 3 326
    • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豹储。 院中可真熱鬧甲献,春花似錦、人聲如沸颂翼。這莊子的主人今日做“春日...
      開封第一講書人閱讀 31,676評論 0 22
    • 文/蒼蘭香墨 我抬頭看了看天上的太陽朦乏。三九已至,卻和暖如春氧骤,著一層夾襖步出監(jiān)牢的瞬間呻疹,已是汗流浹背。 一陣腳步聲響...
      開封第一講書人閱讀 32,829評論 1 269
    • 我被黑心中介騙來泰國打工筹陵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刽锤,地道東北人。 一個月前我還...
      沈念sama閱讀 47,743評論 2 368
    • 正文 我出身青樓朦佩,卻偏偏與公主長得像并思,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子语稠,可洞房花燭夜當(dāng)晚...
      茶點故事閱讀 44,629評論 2 354

    推薦閱讀更多精彩內(nèi)容

    • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法宋彼,類相關(guān)的語法弄砍,內(nèi)部類的語法,繼承相關(guān)的語法输涕,異常的語法音婶,線程的語...
      子非魚_t_閱讀 31,623評論 18 399
    • Java內(nèi)存分配與管理是Java的核心技術(shù)之一,一般Java在內(nèi)存分配時會涉及到以下區(qū)域: 寄存器:我們在程序中無...
      yekai閱讀 327評論 0 3
    • 前言 不知道大家有沒有這樣一種感覺,程序員的數(shù)量井噴了檐什〔晡裕可能是因為互聯(lián)網(wǎng)火了,也可能是各家培訓(xùn)機構(gòu)為我們拉來了大量...
      活這么大就沒飽過閱讀 2,723評論 6 26
    • 無論使用React還是ReactNative厢汹,Redux總是繞不過的結(jié)(劫螟深?解?)烫葬。近日在實現(xiàn)一個本地收藏組件的時...
      changchao閱讀 1,340評論 1 4
    • 記得最最開始聽說要學(xué)Linux時候界弧,我還是蠻期待的,畢竟命令行這種東西高端大氣上檔次一樣的搭综,學(xué)得好的話垢箕,拿...
      Insolence丶Jeste閱讀 215評論 0 3