特點:
(推薦教程:java入門教程)
1、String類是被final修飾的,是不能被繼承的。
2、String類底層使用數(shù)組結構。jdk9以前使用的是char[],jdk9以后使用的是byte[]。
3、String的對象一旦創(chuàng)建就不能修改,底層維護了一個字符串常量池,實現(xiàn)共享。
注意:String類的對象每次修改都會產生一個新的對象。
(視頻教程推薦:java視頻教程)
String對象的拼接
常量池中的字符串常量 + 常量池中的字符串常量 :結果是存儲在常量池中
String c = "a"+"b"; String ab = "ab"; System.err.println(ab==c); //輸出true123
變量 + 常量池中的字符串常量 : 結果是存儲在堆中的
String a = "a"; String c = "a"+"b"; System.err.println(c==a+"b"); //輸出false123
如果拼接結果調用intern()方法,返回值就在常量池中
String a = "a"; String b = "b"; String c = "a"+"b"; System.err.println(c==a+b); //輸出false,證明String類的拼接中只要有一個是變量,結果就存在堆中 String a = "a"; String b = "b"; String c = "a"+"b"; System.err.println(c==(a+b).intern()); //輸出true,說明如果拼接結果調用intern()方法,返回值就在常量池中