Java/字符串

維基教科書,自由的教學讀本

簡介[編輯]

Java中的字符串和C語言相同,都是用由一對引號""括起來的任意長度的字符組成,比如:

String str = "Hello, world!";

其中String是Java的字符串類,包含在默認的java.lang包類。在Java語言中,所有的字符串都是由String類來表示的。與C語言比較起來,Java的字符串有以下幾個不同:

  1. String類所表達的字符串是無法改變的,也就是說只能對其字符進行讀操作,否則Java將生成新字符串。這在很大程度上幫助了Java,將程序中所有相同的字符串用一個對象來表達。
  2. String中的字符都是char類型,即每個字符占用2個字節。
  3. 與C語言利用\0x00來表示字符串的結尾,String類中包含了該字符串的長度(可由str.length()獲得)。

在每個Java的類中,有一個String toString()的函數。利用該函數,類可以提供一個向外的字符串來表達自己的相關信息。

字符串打印[編輯]

在java.lang包里,System類的靜態成員變量outerr分別提供了打印標準輸出和標準錯誤的函數,兩者都是java.io.PrintStream類,主要使用的標準輸出方式有:

System.out.print("Hello, world!");
System.out.println("I'm Kitty.");
System.out.printf("I'm %d years old.\n", 12);
System.out.format("Do you like me?\n");

轉義字符[編輯]

在源代碼中,Java字符串使用了和C語言一樣的轉義字符,用斜槓表示:

  • \t: 制表符
  • \n: 換行
  • \0xFFFF: 用16進位表示的字符
  • \0255: 用8進位表示的字符

字符串操作[編輯]

String類中提供了很多字符串操作的函數,但請記住,原字符串並沒有改變,而是生成了新字符串。主要的操作如下:

  1. String concat(String str)
  2. String replace(char oldChar, char newChar)
  3. String substring(int beginIndex)
  4. String toLowerCase()
  5. String toUpperCase()
  6. String trim()

詳細的關於String類的信息,請參閱Java API:java.lang.String

字符串生成[編輯]

java.lang包中提供了兩個類來支持對字符串的生成,分別是StringBufferStringBuilder,兩者的區別在於前者是線程安全的。下面提供一個StringBuilder的例子來說明是如何生成新字符串的:

String name = "Kitty";
int age = 12;

StringBuilder builder = new StringBuilder(); // 新建StringBuilder类
builder.append("My name is ").append(name).append('.').append('\n'); // 利用append函数向StringBuilder对象添加新的字符串
builder.append("I'm ").append(age).append('.').append('\n'); // 支持对基础数据类型的输入

String new_str = builder.toString(); // 最后利用toString导出新字符串

System.out.println(new_str);

控制台將輸出:
>>> My name is Kitty.
>>> I'm 12.