close
X

14. String


從零開始學Java封面14.jpg

在我們日常的開發中,String 字串這種資料型別會經常使用,所以我拿出一些篇幅主要來說一說關於String的常用規則。

之前已經介紹過 Java 中的幾種資料型別,那麼String是一種字串資料型別String 型別變數儲存的是字串型別的資料,比如一句話,一段文字。

1. 定義字串型別變數

String str = "abc";String str1 = "";String str2 = new String("你好");

String指定變數型別字串內容要用英文雙引號""包裹,如果沒有內容則為空字串。也可以使用建立對象的方式來定義字串型別變數String str2 = new String("你好");

String是一種引用型別變數,不同於基本型別變數。注意String是一個類,定義一個字串的本質是創造一個String類的一個對象出來,把字串存放在對象中。因為該型別是一個類,當然可以使用String str2 = new String("你好");呼叫String構造方法,來定義一個字串

2. 獲取字串長度

String str = "hello, world";System.out.println(str.length());

使用str對象的length()方法獲取字串長度,注意:一個空格也算是一個部門長度。


output:

12

3. 格式化字串

實際情況中,你會經常需要去按照你想要的格式來處理一些字串,比如:想把 nameagejob三個變數格式化成一個句子:我的名字叫 Arvin, 我今年 28 歲,我的職業是工程師

String name = "Arvin";int age = 28;String job = "工程師";// 我的名字叫 Arvin, 我今年 28 歲,我的職業是工程師String text = "我的名字叫 " + name + ",我今年 " + age + " 歲" + ",我的職業是" + job;System.out.println(text);String fromatString = "我的名字叫 %s, 我今年 %d 歲,我的職業是%s";System.out.println(String.format(fromatString,name,age,job));

output:

我的名字叫 Arvin,我今年 28 歲,我的職業是工程師我的名字叫 Arvin, 我今年 28 歲,我的職業是工程師

1、第一種做法是使用 +連線各個變數,會把各個變數連線在一起,這時非String型別變數會自動轉換為字串型別


2、使用String類的 format()方法格式化字元,第一個引數是你要定義的格式化模板,後面的引數是你依次要傳遞的字串變數

格式化模板中:

%s是一個字串佔位符,會把String字串型別的資料替換到該位置。該實例中,name的值在格式化後會被替換到 %s的位置。

%d是一個數值佔位符,格式化後,age的值會被替換到該位置。

4. 字串的比較

字串型別變數進行比較時不能直接使用 ==,要使用String變數equals()方法

String str = "abc";String str1 = new String("abc");System.out.println(str == str1);System.out.println(str.equals(str1));String str2 = "abcd";if ("abc".equals(str2)) {    System.out.println("字串 abc 和 str2 的內容相等");} else {  System.out.println("字串 abc 和 str2 的內容不相等");}

輸出:

falsetrue字串 abc 和 str2 的內容不相等

str == str1是直接比較 str 和 str1 變數的值,而他們的存放的值不是我們的真實內容,是真實內容對應的引用地址 位址。

str.equals(str1) 是比較 str 和 str1 中的真實內容

5. 字串查詢

如果在一個字串中需要去查詢一些特定的內容,這時候我們可以使用以下查詢方法

String str = "hello world, abc";boolean b = str.contains("hello111");//str字串是否包含"hello111"System.out.println(b);System.out.println(str.indexOf("abc111"));if (str.indexOf("abc") > -1) {}System.out.println(str.startsWith("hello"));System.out.println(str.endsWith("abc"));

輸出:

false-1truetrue

contains("查詢內容"): 是否包含的意思,包含則返回true,否則返回false.

indexOf("查詢內容"):查詢內容在被查詢字串中的位置,返回數值,若不包含,則返回 -1,否則返回具體位置。

startsWith("查詢內容"):是否以查詢內容開始字串,是則返回true,否則返回false

endsWith("查詢內容")字串是否以查詢內容結尾,是則返回true,否則返回false

6. 替換字串

String str = "abcd, hello, yeh";String strnew = str.replace("e", "fff");System.out.println(strnew);

輸出:

abcd, hfffllo, yfffh

replace("被替換的內容","替換的內容")

7. 擷取字串

String str = "abc, hello, tom";String str1 = str.substring(0,3);System.out.println(str1);System.out.println(str.substring(5));

output:

abchello, tom

substring(擷取開始位置索引,擷取結束位置索引)

substring(擷取結束位置索引)

8. 去除字串中的空格

有時候,你不想讓字串中存在空格

String str = "   aba  c  ";System.out.println(str);System.out.println(str.trim());System.out.println(str.replace(" ",""));

output:

   aba  c  aba  cabac

trim()方法可以去除字串兩端的空格,中間的空格去除不了

replace(" ",""),可以把字串中所有的空格替換掉。

9. 分割字串

如果你想把一個字串,按照某種分割方式分割成一個字串陣列,你可以這樣做:

String str = "red,green,yellow,blue";String[] colors = str.split(",");for (String color : colors) {    System.out.println(color);}

output

redgreenyellowblue

split("分割點字串"),引數是一個分割點,實例中把, 作為一個分割點。返回一個分割後的一組字串,也即是字串陣列。

10. 轉換

實際上,你會經常遇到這種情況,想把一個數值轉換為字串,或者把字串轉為為其他基本型別

1、基本型別轉為字串

int i = 100;double d = 292.02;boolean b = true;String str = i + "";System.out.println(str);Boolean b1 = b;String bs = b1.toString();System.out.println(bs);

output

100true

基本型別變數可以直接使用 +"",轉換為字串。也可以使用其對應包裝類實例的toString()方法轉換為字串

2、字串轉為基本型別

String is = "100";int i = Integer.parseInt(is);int sum = i + 200;System.out.println(sum);

output

300

字元型別轉為基本型別可以使用基本型別對應的包裝類實例的 parseXX()方法,該實例中 Integer.parseInt(is)字串"100"轉為int型別的100,可以進行運算。

11. StringBuffer

你已經知道,可以使用 +連線多個變數,並轉換為一個字串型別的值。但是這種做法效率並不是很高,可以在低頻次、少量連線操作使用它。如果要高頻次、大量的連線字串操作,可以使用 StringBuffer

String name = "tom";int age = 28;String job = "自由職業";// tom, 28, 自由職業StringBuffer buffer = new StringBuffer(name);buffer.append(", ")        .append(age)        .append(", ")        .append(job);System.out.println(buffer.toString());

output:

tom, 28, 自由職業

append()方法用於連線字串。可以高頻次使用,效率較高。

我只是展示了關於String字串常用操作,當然它有很多個操作,如果用到其他方法,建議大家去查詢 Java API.

如果你想學習程式開發,又沒有太多的預算或者自學N天無果。那你可以試試我的程式開發私教服務:JavaWeb全棧開發一對一程式開發私教,屬於你的程式開發私人教練!


分享是一種美德,喜歡就幫我們讚一下支持吧~

為你推薦