Java™ 教程(字串)

博弈發表於2019-01-19

字串

在Java程式設計中廣泛使用的字串是一系列字元,在Java程式語言中,字串是物件。

Java平臺提供String類來建立和操作字串。

建立字串

建立字串的最直接方法是編寫:

String greeting = "Hello world!";

在這種情況下,"Hello world!"是一個字串文字 — 程式碼中的一系列字元,用雙引號括起來,每當它在程式碼中遇到字串文字時,編譯器就會建立一個帶有其值的String物件 — 在本例中為Hello world!

與任何其他物件一樣,你可以使用new關鍵字和建構函式建立String物件,String類有13個建構函式,允許你使用不同的源提供字串的初始值,例如字元陣列:

char[] helloArray = { `h`, `e`, `l`, `l`, `o`, `.` };
String helloString = new String(helloArray);
System.out.println(helloString);

此程式碼段的最後一行顯示hello.

注意:String類是不可變的,因此一旦建立,就無法更改String物件,String類有許多方法,其中一些將在下面討論,似乎可以修改字串,由於字串是不可變的,因此這些方法真正做的是建立並返回包含操作結果的新字串。

字串長度

用於獲取物件資訊的方法稱為訪問器方法,可以與字串一起使用的一種訪問器方法是length()方法,它返回字串物件中包含的字元數,在執行以下兩行程式碼後,len等於17

String palindrome = "Dot saw I was Tod";
int len = palindrome.length();

palindrome是一個對稱的單詞或句子 — 它向前和向後拼寫相同,忽略大小寫和標點符號,這是一個簡短而低效的程式來反轉palindrome字串,它呼叫String方法charAt(i),它返回字串中的第i個字元,從0開始計數。

public class StringDemo {
    public static void main(String[] args) {
        String palindrome = "Dot saw I was Tod";
        int len = palindrome.length();
        char[] tempCharArray = new char[len];
        char[] charArray = new char[len];
        
        // put original string in an 
        // array of chars
        for (int i = 0; i < len; i++) {
            tempCharArray[i] = 
                palindrome.charAt(i);
        } 
        
        // reverse array of chars
        for (int j = 0; j < len; j++) {
            charArray[j] =
                tempCharArray[len - 1 - j];
        }
        
        String reversePalindrome =
            new String(charArray);
        System.out.println(reversePalindrome);
    }
}

執行該程式會產生以下輸出:

doT saw I was toD

要完成字串反轉,程式必須將字串轉換為字元陣列(第一個for迴圈),將陣列轉換為第二個陣列(第二個for迴圈),然後再轉換回字串,String類包含一個方法getChars(),用於將字串或字串的一部分轉換為字元陣列,因此我們可以在上面的程式中替換第一個for迴圈:

palindrome.getChars(0, len, tempCharArray, 0);

連線字串

String類包括用於連線兩個字串的方法:

string1.concat(string2);

這將返回一個新字串,該字串為string1,並在末尾新增了string2

你還可以將concat()方法與字串文字一起使用,如下所示:

"My name is ".concat("Rumplestiltskin");

字串通常使用+運算子連線,如:

"Hello," + " world" + "!"

結果是:

"Hello, world!"

+運算子廣泛用於列印語句,例如:

String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");

這將列印:

Dot saw I was Tod

這種連線可以是任何物件的混合,對於不是String的每個物件,呼叫其toString()方法將其轉換為String

注意:Java程式語言不允許文字字串跨越原始檔中的行,因此必須在多行字串中的每行末尾使用+連線運算子,例如:

String quote = 
    "Now is the time for all good " +
    "men to come to the aid of their country.";

使用+連線運算子在行之間斷開字串在print語句中非常常見。

建立格式字串

你已經看到使用printf()format()方法來列印帶有格式化數字的輸出,String類有一個等效的類方法format(),它返回一個String物件而不是一個PrintStream物件。

使用Stringstatic format()方法可以建立一個可以重用的格式化字串,而不是一次性列印語句,例如替換:

System.out.printf("The value of the float " +
                  "variable is %f, while " +
                  "the value of the " + 
                  "integer variable is %d, " +
                  "and the string is %s", 
                  floatVar, intVar, stringVar);

你可以這樣寫:

String fs;
fs = String.format("The value of the float " +
                   "variable is %f, while " +
                   "the value of the " + 
                   "integer variable is %d, " +
                   " and the string is %s",
                   floatVar, intVar, stringVar);
System.out.println(fs);

字串總結

字串是一系列字元,廣泛用於Java程式設計,在Java程式語言中,字串是物件,String類有60多個方法和13個建構函式。

最常見的情況是,建立一個帶有如下語句的字串:

String s = "Hello world!";

而不是使用其中一個String建構函式。

String類有許多方法可以查詢和檢索子字串,然後可以使用+連線運算子輕鬆地將它們重新組合成新的字串。

String類還包括許多實用方法,其中包括split()toLowerCase()toUpperCase()valueOf()。後一種方法在將使用者輸入字串轉換為數字時是必不可少的,Number子類還具有將字串轉換為數字的方法,反之亦然。

除了String類之外,還有一個StringBuilder類,使用StringBuilder物件有時比使用字串更有效,StringBuilder類提供了一些對字串有用的方法,其中包括reverse(),但是,通常,String類具有更廣泛的方法。

可以使用StringBuilder建構函式將字串轉換為字串構建器,可以使用toString()方法將字串構建器轉換為字串。


上一篇:字元

下一篇:在數字和字串之間轉換

相關文章