每天學習十分鐘16之Java學習筆記__Java

來源:互聯網
上載者:User

以Java的字串來說,就有一些必須注意的特性:
- - -字串常量與字串池
- - -不可變動(Immutable)字串

1、字串常量與字串值
用以下程式碼片段來說明:

String name1 = "zhangsan";String name2 = "zhangsan";String name3 = new String("zhangsan");String name4 = new String("zhangsan");System.out.println(name1 == name2);System.out.println(name1 == name3);System.out.println(name3 == name4);//  程式碼片段分別顯示true,false, false的結果

分析:在Java中為了效率考慮,以“”包括的字串,即字串常量(String literal),只要內容相同(序號、大小相同),無論在程式碼中出現幾次,JVM都只會建立一個String執行個體,並在字串池(String pool)中維護。第一個結果為true,是因為建立name1的時候,JVM會建立一個String執行個體放在字串池中,並給name1參考,而第二行則是讓name2直接參考至字串池中的String執行個體。至於後面的false,因為new時建立了新對象,name3與name4都是參考至建立的String執行個體。
如果想比較對象實質內容是否相同,不要使用==,要使用equals(),同樣地,如果想比較字串實際字元內容是否相同,不要使用== ,要使用equals()。

2、不可變動字串
在Java中,字串對象一旦建立,就無法更改對象中任何內容,對象上沒有任何方法可以更改字串內容。用+實現連接字串是怎麼達到的。例如:

String name1 = “Java”;String name2 = name1 +“World”;System.out.println(name2);

上面這個程式片段會顯示JavaWorld,由於無法改變字串內容對象,所以結果不是直接在name1參考的字串對象之後添加World內容。反編譯後得到:使用+連接字串 ,會建立java.lang.StringBulider對象,使用其append()方法來進行+左右兩邊字串附加,最後再轉換為toString()返回。
總結:在重複性場合如迴圈或遞迴時盡量不要使用+連接字串,這會因為頻繁產生新對象,造成效能上的負擔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.