黃階低級 - 《 Java 核心》- 3.6 字符串 - 修改0次

1、字符串

Java 字符串就是 Unicode 字符序列

  • Java 沒有內置的字符串類型,所以在標準 Java 類庫中提供了一個預定義類,叫做 String。

  • 每個用雙引號括起來的字符串都是 String 類的一個實例:

String e = "";//an empty string
String greeting = "Hello";

2、子串

  • 可以使用 substring 方法,兩個參數分別是起始位置,包前不包後。
String greeting = "Hello";
String s = greeting.substring(0, 3);
System.out.println(s);// 輸出Hel,子串長度爲 3-0=3
  • 使用 substring 的一個優點,容易計算子串的長度。

3、拼接

  • Java 語言可以使用 + 號進行字符串拼接,但有更好的方式,後續再討論。

4、不可變字符串

坑:String類沒有提供用於修改字符串的方法!

  • 所以想將字符串 “Hello” 修改爲 “Help” ,要這樣寫:
String greeting = "Hello";
greeting = greeting.substring(0, 3) + "p";
System.out.println(greeting);// 輸出Help
  • 不可變字符串的優點:編譯器可以讓字符串共享,如果複製一個字符串變量,原始字符串與複製的字符串共享相同的字符。
  • Java 的設計者認爲共享帶來的高效率遠遠勝過提取、拼接字符串所帶來的低效率。
String greeting = "Hello";
//有人將 Java 字符串看做是字符串數組,像下面這樣:
char greeting[] = "hello";
//這種認識是錯誤的,其實 Java 字符串更加像 char* 指針:
char* greeting = "hello";
//當採用另一個字符串替換 greeting 的時候, Java 代碼主要進行下列操作:
char* temp = malloc(6);
strncpy(temp,greeting,3);
strncpy(temp + 3,"p!",3);

5、字符串相等

判斷是否是本身使用 == ,判斷是否相等使用 equals

  • s.equals(t) , s 和 t 可以是字符串變量,也可以是字符串常量
String greeting = "Hello";
System.out.println("Hello".equals(greeting));// true
System.out.println("hello".equalsIgnoreCase(greeting));// true,忽略大小寫差別
  • 工作中不要使用 == 運算符檢測字符串的相等性,以免程序中出現糟糕的 bug ,從表面上看,這種 bug 很像隨機產生的間歇性錯誤。
  • C++ 的 string 類重載了 == 運算符,但 Java 並沒有這麼做。

6、空串和 Null 串

  • null 串表示目前沒有任何對象與該變量關聯
  • 空串是一個 Java 對象,有自己的串長度(0)和內容(空)
  • 要檢查一個字符串既不是 null 串也不是空串:
if(str != null && str.length() != 0)//檢查一個字符串既不是 null 串也不是空串
  • 而且檢查 null 要放在前面,因爲在 null 值上調用方法會出現問題。

7、構建字符串

  • 有時需要由較短的字符串構建字符串,例如按鍵或者來自文件中的單詞,使用 StringBuilder 或者 StringBuffer 可以提高效率。
StringBuilder builder = new StringBuilder();
builder.append('a'); // 添加單一字符
builder.append("bcd"); // 添加字符串
String completedString = builder.toString(); // 構建字符串
System.out.println(completedString);// 輸出 abcd
發佈了41 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章