String和StringBuffer、包裝類等

學習總結

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()方法可以實現其他的功能。

發佈了26 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章