字符串初始化的兩種方式:
String s1= " hello";
String s2 = new String("hello");
第一種方式會在棧中創建一個對象引用變量,然後查看字符串池(關於字符串池參考文末鏈接)中是否已經存在該字符串(“hello”),如果存在則對象的引用直接指向字符串池中該字符串;如果不存在,則將創建的字符串對象放入字符串池中,並讓引用變量指向它。
第二種方式在堆中創建對象,每次都創建新的對象
*字符串池:“字符串池”,是Java爲了提高內存利用率而採用的措施:當遇到String a = "Hello"; 這樣的語句時,Java會先在字符串池中尋找是否已經存在"Hello"這個字符串,如果沒有,則建立字符串"Hello"對象,然後變量 a 指向這個地址;然後遇到語句String b = "Hello",這時字符串池中已經有 "Hello"了,所以直接讓變量b也指向這個地址,省去了重新分配的麻煩。