Programcreek -Java基礎之String---用""還是用new String("")

來源:互聯網
上載者:User

標籤:

Java裡可以用兩種方法來建立一個String:

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

這兩種方法有什麼不同?

1. 雙引號 Vs. 建構函式

用兩個簡單的代碼來回答這個問題。

Example 1:

String a = "abcd";String b = "abcd";System.out.println(a == b);  // TrueSystem.out.println(a.equals(b)); // True

在JVM 方法區,a和b指向同一個String字面量,記憶體引用是相同的,所以a==b。

當建立多個相同的String字面量時,只有一個相同的String字面量被儲存下來。這稱為字串的駐留(string interning)。Java 中所有常量String都會自動被駐留。

Example 2:

String c = new String("abcd");String d = new String("abcd");System.out.println(c == d);  // FalseSystem.out.println(c.equals(d)); // True

JVM堆heap中c和d指向兩個不同的對象,所以c==d值為假。不同的對象有不同的記憶體引用。

示範了這兩種情景:

2. 運行期字串駐留String Interning

即使兩個String是用建構函式(new String(""))構建,在運行期也會執行字串駐留。

String c = new String("abcd").intern();String d = new String("abcd").intern();System.out.println(c == d);  // Now trueSystem.out.println(c.equals(d)); // True



3. 如何使用

如果僅僅需要建立一個字串,你需要使用雙引號方式建立字串。如果你需要在堆裡新建立一個字串對象時,可以考慮使用建構函式方式建立字串。這裡有個建構函式用例參考。

原文:http://www.programcreek.com/2014/03/create-java-string-by-double-quotes-vs-by-constructor/

字串駐留參考:

http://blog.csdn.net/biaobiaoqi/article/details/6892352

http://java-performance.info/string-intern-in-java-6-7-8/

Programcreek -Java基礎之String---用""還是用new String("")

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.