- String的初始化
1、String s = "sncv";
"sncv"存儲在字符串常量池中,如果常量池中存在,則不需要創建,直接用就好,如果常量池中不存在,就需要創建。
2、String s = new String("abc");
在堆中創建兩個對象,一個字符串對象,一個new對象。
- String中的equals方法
Object類中的equals()方法比較的是兩個對象的地址是否相同,等同於"==".
String類雖然是Object類的子類,但是它覆寫了父類中的equals()方法,比較的是兩個字符串的內容是否相同。
String s = "abc";
String s1 = new String("abc");
System.out.println(s == s1);//false,"=="用於比較兩個對象的地址是否相同。
System.out.println(s.equals(s1));//true
- String中的compareTo()方法
System.out.println("a".compareTo("A"));//相當於返回a - A的ascii碼之間的差值
利用compareTo()方法,可以對多個字符串進行排序操作。
- StringBuffer與StringBuilder
相同點:StringBuilder與StringBuffer的功能是一樣的,具有一個特殊的方法reverse():將字符串翻轉。
不同點:StringBuffer是線程同步的,通常用於多線程。StringBuffer實現同步的方法是使用同步代碼塊。
StringBuilder是線程不同步的,通常用於單線程。StringBuilder的出現時爲了解決StringBuffer在單線程時效率低的問題。
- 注意:字符串的長度不會發生變化,所有改變了字符串長度的操作都是生成了一個新的字符串,字符串常量池中會增加一個字符串常量。而StringBuffer和StringBuffer的出現,方便了對字符串的改變,不會因爲字符串長度的變化而在字符串常量池中增加過多的字符串常量。