3. String 類是不可變動(dòng)的,聽起來似乎并非如此。事實(shí)上,當(dāng)試圖修改String的內(nèi)容時(shí),如 String s = "Java"; s = "HTML" 此時(shí)并沒有修改原來 s 的內(nèi)容,而是新建了一個(gè)內(nèi)容為"HTML"的字符串,然后s指向了那個(gè)新字符串。
4. JVM 為了提高效率同時(shí)節(jié)省內(nèi)存空間,會(huì)自動(dòng)讓兩個(gè)(或以上)內(nèi)容相同的字符串reference指向同一個(gè)字符串,而該字符串可以通過任意一個(gè)字符串的intern方法得到,如 String s = "Welcome to Java"; String s1 = new String("Welcome to Java"); String s2 = s1.intern(); String s3 = "Welcome to Java";
System.out.println("s1 == s is ", (s1 == s)); System.out.println("s2 == s is ", (s2 == s)); System.out.println("s == s3 is ", (s == s3));
則顯示 s1 == s is false s2 == s is true s == s3 if true