一、字串(String)
1、在 Java 中,字串被作為 String 類型的對象處理。String 類位於 java.lang 包中。預設情況下,該包被自動匯入所有的程式。
2、如何初始化字串
//定義一個字串String s1 = "Java";//建立一個Null 字元串String s2 = new String();//建立一個Null 字元串,並賦值String s3 = new String("com.lemon");
3、字串的不變性:String 對象建立後則不能被修改,是不可變的,所謂的修改其實是建立了新的對象,所指向的記憶體空間不同。
4、 一旦一個字串在記憶體中建立,則這個字串將不可改變。如果需要一個可以改變的字串,我們可以使用StringBuffer或者StringBuilder(後面章節中會講到)。
5、 每次 new 一個字串就是產生一個新的對象,即便兩個字串的內容相同,使用 ”==” 比較時也為 ”false” ,如果只需比較內容是否相同,應使用 ”equals()” 方法
例子:
String s01 = "Java"; String s02 = "Java"; String s03 = "I love" + s01; String s4 = "I love " + s01; // 比較字串s01和s02 // imooc為常量字串,多次出現時會被編譯器最佳化,只建立一個對象,true System.out.println("s01和s02記憶體位址相同嗎。" + (s01 == s02)); //比較字串s01和s03 false System.out.println("s01和s03記憶體位址相同嗎。" + (s01 == s03) ); // s01是變數,s04在運行時才知道具體值,所以s03和s04是不同的對象 false System.out.println("s03和s04記憶體位址相同嗎。" + (s4 == s03)); // 類比下 String object1 = new String("OC"); String object2 = new String("OC"); String object3 = "OC"; // == 比較是引用對象的記憶體位址 false System.out.println(object1 == object2); // == 比較兩個引用對象的記憶體位址 false System.out.println(object1 == object3); // equals 比較值 true System.out.println(object1.equals(object2));
demo