1. 程式人生 > >(010) java後臺開發之String字串操作

(010) java後臺開發之String字串操作

先看一個例子:

  • String str1;
    String str2 = "";
    String str3 = new String();
  • str1的值為null,表示沒有指向任何字串物件
  • str2已經指向了一個字串物件,這個物件的字元序列內容為空
  • str3是顯式地呼叫建構函式建立字串物件,該物件的字元序列內容為空,與第二行程式碼是基本一樣的。
String有一個format方法,類似於C語言中printf()風格的格式化輸出,這使得我們對輸出格式的控制更加容易。

String的format方法

比如有三個變數:

String name = "David";
int age = 18
;
String hobby = "籃球";

format方法可以這樣寫:

String formatString = "我的名字是%s,我今年%d歲,我的愛好是%s";
String output = String.format(formatString, name, age, hobby);
System.out.println(output);

你也可以直接使用System.out.format函式,引數簽名和意義是完全一樣的,所不同的是這個函式直接將格式化的字串輸出:

String formatString = "我的名字是%s,我今年%d歲,我的愛好是%s";
System.out
.format(formatString, name, age, hobby);

其中的%s%d表示將會用字串和整數的值來替代它們。

以下為常見的格式化字元

字元 用以格式化的資料型別
d 整數型(10進位制 )
c Unicode字元
b Boolean值
s String
f 浮點數(10進位制)
e 浮點數(科學計數)
x 整數(16進位制)

String str1 = "abcabcabcxyz";
        String str2 = str1.replace("abc", "x");
        System.out.println(str2);
        String str3 = str2.replace("x","ggg");
        System.out.println(str3);


        // trim()把字串前後的空格都刪除,方法對於清除額外的空字元非常有用:


        String str4 = "   a  bc      ";
        String str5 = str4.trim();
        System.out.println(str5);
        
        String str6 = str4.replace(" ", ""); // 去掉所有空格,包括首尾、中間 
        System.out.println(str6);

StringBuffer的許多方法和String 的區別

StringBuffer表示表示可變長的和可修改的字元序列。我們可以StringBuffer進行插入或者追加字元序列、翻轉字元序列等操作。

StringBuffer必須通過建構函式進行初始化,它有三個構造方法:

  • StringBuffer():預設的構造方法預留16個字元的空間
  • StringBuffer(int size):第二種形式接收一個整數引數,顯示的設定緩衝區的大小
  • StringBuffer(String str):第三種形式接收一個String引數,設定StringBuffer物件的初始內容,同時多預留16個字元的空間

StringBuffer的許多方法和String類都差不多,功能幾乎一模一樣。

String型別和StringBuffer型別的主要區別其實在於String是不可變的物件, 因此在每次對String物件進行改變的時候其實都會生成一個新的String物件。所以經常改變內容的字串最好不要用String ,因為每次生成物件都會對系統性能產生影響。

使用StringBuffer類則會對StringBuffer物件本身進行操作,而不是生成新的物件。所以在一般情況下我們推薦使用StringBuffer,特別是字串物件經常改變的情況下。StringBuffer類的操作效能要優於String

瞭解了這個區別,我們也應該比較明確兩者的使用場景了。

  • 使用String的場景:在字串不經常變化的場景中可以使用String類,例如常量的宣告、少量的變數運算。
  • 使用StringBuffer類的場景:在頻繁進行字串運算(如拼接、替換、刪除等),並且執行在多執行緒環境中,則可以考慮使用StringBuffer,例如XML解析、HTTP引數解析和封裝。