學習總結
2008-12-11
1. String類:
(1)總述:
因爲String類被廣泛的使用,所以被定義爲final屬性,不能被修改,避免被重寫、覆蓋而改變String的值。如果對String類的對象作修改,系統會創建新的String對象,而原來的String類對象還在。實現字符串相加操作的時候不建議使用String類對象,因爲每修改一次String對象都會產生一個新的對象,這樣會使系統產生大量的String對象導致系統效率降低。我們一般採用StringBuffer類對象,它是可變的。
(2)trim()方法
作用是取出字符串兩端的空格(字符串中間的空格不能去掉)後返回一個新的字符串,注意,原來的字符串仍然存在。
String str = “ Hello world ”;
String str0 = str.trim(); //必須要重新賦給一個變量後才能使用
System.out.println(str0);
(3)String str = null //取str長度時空指針異常
String str = “” //取str長度時返回0
(4)String.compareTo()方法:
String str0 = "abc";
String str1 = "a";
System.out.println(str1.compareTo(str0));
/*
* 這是字典排序的定義。如果這兩個字符串不同,那麼它們要麼在某個索引處的字符不同(該索引對二者均爲有效索引), 要麼長度不同,或者同時具備這兩種情況。如果它們在一個或多個索引位置上的字符不同,假設 k 是這類索引的最小值; 則在位置 k
上具有較小值的那個字符串(使用 < 運算符確定),其字典順序在其他字符串之前。在這種情況下, compareTo 返回這兩個字符串在位置 k 處兩個char 值的差,即值: this.charAt(k)-anotherString.charAt(k) 如果沒有字符不同的索引位置,則較短字符串的字典順序在較長字符串之前。在這種情況下,compareTo 返回這兩個字符串長度的差,即值: this.length()-anotherString.length()
*/
(5)String類型轉換成StringBuffer類型
StringBuffer stringBuffer = new StringBuffer(str)使用的是構造方法,將StringBuffer初始化爲str
(6)concat操作
相當於StringBuffer裏的append方法,不同的是concat操作要賦值給一個新的String對象。
2. StringBuffer類
(1)總述
一個類似於 String
的字符串緩衝區,但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調用可以改變該序列的長度和內容。
(2)主要的方法
①構造對象
StringBuffer stringBuffer = new StringBuffer();可以給出String類對象的參數。
②append方法
將指定參數以字符串的形式追加到StringBuffer對象的序列末尾:
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Hello");
stringBuffer.append("world");
stringBuffer.append(2.558);
System.out.println(stringBuffer);
③insert方法
第二個參數的字符串表示形式將被插入此序列中 offset
指示的位置處。此序列的長度將增加 1。
for(int i =1;stringBuffer.length()-3*i>0;i++){
stringBuffer.insert(stringBuffer.length()-3*i, ',');
}
3. ==和equals的比較
(1)總述
Equals()只能比較引用類型,而==一般比較原始數據類型,但也能比較引用類型,但這個時候比較的是對象在內存中的首地址;
Equals默認的是比較對象的引用,如果想自己判斷,則需要重寫equals方法和hashcode方法;系統的String類型和Wrapper類型已經被重寫了。
注:hashcode,哈希碼,可以理解成是對象的標記碼,但要注意哈希碼相等對象不一定相同。
(2)應用
String str1 = “abc”; String str1 = “abc”;?????
String str2 = “abc”; String str2 = “abc”;
Str1 == str2 -àtrue str1 == str2 -à false
第一個指向同一個對象,第二個指向兩個不同的對象,儘管二者對象內容一樣。
4. 包裝類
(1)八種基本數據類型的封裝類
(2)原始類型轉換成String的兩種方法
① char i = 'a';
String m = Character.toString(i);
②int int1 = 3;
String str1 = "" + int1;
這裏第二種方法一定要加一個空格的,否則出錯。
(3)String類型轉換成int類型時,字符串必須是數字串
String str2 = "123";
int int2 = Integer.parseInt(str2);
System.out.println(int2);
(4)toString()方法
toString()方法在根父類Object類中定義,其返回值是String類型,描述當前對象的有關信息如內存地址等。在進行String與其它類型數據的連接操作時,自動調用toString()方法。可以根據需要在用戶自定義類型中重寫toString()方法。基本類型數據轉換爲String類型時,調用了對應封裝類的toString()方法。
System.out.println(對象)時,如果沒有重寫toString()方法則會輸出對象在內存中地表示,重寫toString()方法可以實現其他的功能。