字元
一般情況下,當我們處理字元時,我們用未經處理資料類型 char。
樣本
char ch = 'a';// Unicode for uppercase Greek omega characterchar uniChar = '\u039A'; // an array of charschar[] charArray ={ 'a', 'b', 'c', 'd', 'e' };
然而在開發中,我們會遇到需要使用對象而不是未經處理資料類型的情況。為了達到這個需求。Java 為未經處理資料類型 char 提供了封裝類 Character。
Character 類為操控字元提供了一系列有用處的類(例如:靜態類)。你可以藉助 Character 建構函式創造一個 Character 對象。
Character ch = new Character('a');
Java 編譯器也將能在某些情況下為你創造一個 Character 對象。例如:如果你將一個原始 char 傳輸到一個可預期對象的方法,編譯器就會為你自動將 char 轉化成 Character。 如果轉換從反方向進行,這個特點被稱之為自動裝箱或拆箱。
樣本
// Here following primitive char 'a'// is boxed into the Character object chCharacter ch = 'a';// Here primitive 'x' is boxed for method test,// return is unboxed to char 'c'char c = test('x');
逸出序列
有反斜線(\)在前的字元是一個逸出序列並且對於編譯器有特殊的意義。
分行符號(\n)在 System.out.println() 語句中經常使用,在字串列印出來後換行。
以下的表格展示了 Java 逸出序列:
逸出序列 |
描述 |
\t |
在文本中插入一個標籤。 |
\b |
在文本中插入一個退格。 |
\n |
在文本中插入一個分行符號。 |
\r |
在文本中插入一個斷行符號。 |
\f |
在文本中插入一個換頁。 |
\' |
在文本中插入一個單引號字元。 |
\\ |
在文本中插入一個反斜線字元。 |
當一個逸出序列遇到一個列印語句,編譯器就會相應地解譯。
樣本
如果你想把引號放入引號內,必須使用逸出序列, \” ,在內部引用:
public class Test { public static void main(String args[]) { System.out.println("She said \"Hello!\" to me."); }}
這將產生以下結果:
She said "Hello!" to me.
Character 方法
以下列表是實現 Character 類所有子類的重要的執行個體方法:
SN |
方法描述 |
1 |
isLetter() 確定具體的char值是一個字母 |
2 |
isDigit() 確定具體的char值是一個數字 |
3 |
isWhitespace() 確定具體的char值是一個空格 |
4 |
isUpperCase() 確定具體的char值是一個大寫字母 |
5 |
isLowerCase() 確定具體的char值是一個小寫字母 |
6 |
toUpperCase() 返回指定字元值的大寫形式 |
7 |
toLowerCase() 返回指定字元值的小寫寫形式 |
8 |
toString() 返回代表指定的字元值的一個String對象,即一個字元的字串 |
字串
字串,它被廣泛應用於 Java 編程,是一個字元序列。在 Java 程式設計語言中,字串是對象。
Java 平台提供了 String 類來建立和操作字串。
建立字串
最直接的方式來建立一個字串是這樣寫的:
String greeting = "Hello world!";
當你建立一個字串時,編譯器在這種情況下用它的值建立一個 String 對象,如:"Hello world!'。
任何其他對象可以通過使用 new 關鍵字,並通過建構函式建立 String 對象。 String 類有11種建構函式提供使用不同類型的字串的初始值,如一個字元數組。
public class StringDemo{ public static void main(String args[]){ char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.'}; String helloString = new String(helloArray); System.out.println( helloString ); }}
這將產生以下結果:
注 String 類是不可變的,因此,一旦建立了 String 對象那麼是不能改變的。如果需要大量修改字元的字串,那麼應該使用 StringBuffer & StringBuilder 類。
String 長度
用於擷取有關對象的資訊的方法稱為存取方法。可以和字串一起使用的一個存取方法是 length() ,它返回包含在字串對象中的字元數。
下面的兩行代碼被執行之後,len 等於17:
public class StringDemo { public static void main(String args[]) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); System.out.println( "String Length is : " + len ); }}
這將產生以下結果:
連接字串
String類包括用於串連兩個字串的方法:
這返回一個新的字串,即在 string1 結尾處添加 string2。還可以使用 concat()方法連接字串,如:
"My name is ".concat("Zara");
字串更常使用 “ + ” 運算子串連在一起,如:
"Hello," + " world" + "!"
這將產生:
看看下面的例子:
public class StringDemo { public static void main(String args[]) { String string1 = "saw I was "; System.out.println("Dot " + string1 + "Tod"); }}
這將產生以下結果:
建立格式化字串
已經有 printf() 和 format() 方法來列印輸出格式的數字。 String 類有一個等價的方法 format(),它返回一個 String 對象,而不是一個 PrintStream 對象。
使用字串的靜態 format() 方法允許建立可重複使用的格式化字串,而不是一次性的 print 語句。例如,如果代替以下方法:
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);
String 方法
這裡是由 String 類支援的方法列表:
SN |
方法及描述 |
1 |
char charAt(int index) 返回指定索引處的字元。 |
2 |
int compareTo(Object o) 將這個字串與另一個對象比較。 |
3 |
int compareTo(String anotherString) 比較兩個字串的字典順序。 |
4 |
int compareToIgnoreCase(String str) 比較兩個字串按字典順序,不區分大小寫差異。 |
5 |
String concat(String str) 將指定的字串串聯到這個字串的結尾。 |
6 |
boolean contentEquals(StringBuffer sb) 返回true若且唯若該字串代表相同的字元序列作為指定的StringBuffer。 |
7 |
static String copyValueOf(char[] data) 返回表示所指定的數組中的字元序列的字串。 |
8 |
static String copyValueOf(char[] data, int offset, int count) 返回表示所指定的數組中的字元序列的字串。 |
9 |
boolean endsWith(String suffix) 測試此字串是否以指定的尾碼結束。 |
10 |
boolean equals(Object anObject) 比較此字串與指定的對象。 |
11 |
boolean equalsIgnoreCase(String anotherString) 比較這個字串到另一個字串,忽略大小寫考慮。 |
12 |
byte getBytes() 將此String解碼使用平台的預設字元集,並將結果儲存到一個新的位元組數組中的位元組序列。 |
13 |
byte[] getBytes(String charsetName 將此String解碼使用指定的字元集的位元組序列,並將結果儲存到一個新的位元組數組。 |
14 |
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 從這個字串複製字元到目標字元數組。 |
15 |
int hashCode() 為這個字串返回一個雜湊碼。 |
16 |
int indexOf(int ch) 返回此字串指定字元第一次出現處的索引。 |
17 |
int indexOf(int ch, int fromIndex) 返回索引這個字串中指定字元第一次出現處,指定索引處開始搜尋。 |
18 |
int indexOf(String str) 返回此字串指定子字串的第一次出現處的索引。 |
19 |
int indexOf(String str,int fromIndex) 返回這個字串中指定子字串的第一次出現處的索引,從指定的索引處開始。 |
20 |
String intern() 返回字串對象的正常化表示。 |
21 |
int lastIndexOf(int ch) 返回此字串指定字元最後一次出現處的索引。 |
22 |
int lastIndexOf(int ch, int fromIndex) 返回此字串指定字元最後一次出現處的索引,從指定索引開始向後搜尋。 |
23 |
int lastIndexOf(String str) 返回此字串指定子字串的最右邊出現處的索引。 |
24 |
int lastIndexOf(String str, int fromIndex) 返回索引這個字串中指定子字串的最後出現處,從指定的索引開始處向後搜尋。 |
25 |
int length() 返回此字串的長度。 |
26 |
boolean matches(String regex) 判斷此字串是否與給定的Regex匹配。 |
27 |
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測試兩個字串的地區等於。 |
28 |
boolean regionMatches(int toffset, String other, int ooffset, int len) 測試兩個字串的地區都是相等的。 |
29 |
String replace(char oldChar, char newChar) 返回從newChar更換oldChar所有出現在此字串中產生一個新的字串。 |
30 |
String replaceAll(String regex, String replacement 替換此字串中給定的Regex與給定替換相匹配的每個子字串。 |
31 |
String replaceFirst(String regex, String replacement) 替換此字串匹配給定的Regex給定替換第一個子字串。 |
32 |
String[] split(String regex) 分割圍繞給定的Regex匹配的這個字串。 |
33 |
String[] split(String regex, int limit) 分割圍繞給定的Regex匹配的這個字串。 |
34 |
boolean startsWith(String prefix) 測試此字串是否以指定的首碼開頭。 |
35 |
boolean startsWith(String prefix, int toffset) 測試此字串是否以指定索引開始的指定首碼開始。 |
36 |
CharSequence subSequence(int beginIndex, int endIndex) 返回一個新的字元序列,這個序列的子序列。 |
37 |
String substring(int beginIndex) 返回一個新的字串,它是此字串的一個子字串。 |
38 |
String substring(int beginIndex, int endIndex) 返回一個新的字串,它是此字串的一個子字串。 |
39 |
char[] toCharArray() 這個字串轉換為一個新的字元數組。 |
40 |
String toLowerCase() 將所有在此字串中的字元使用預設語言環境的規則小寫。 |
41 |
String toLowerCase(Locale locale) 將所有在此字串中的字元使用給定Locale的規則小寫。 |
42 |
String toString() 這個對象(它已經是一個字串!)返回字串形式(這裡是自己本身)。 |
43 |
String toUpperCase() 使用預設語言環境的規則將此String中所有的字元轉換為大寫。 |
44 |
String toUpperCase(Locale locale) 使用給定Locale的規則將此String中所有的字元轉換為大寫。 |
45 |
String trim() 返回字串的一個副本,開頭和結尾的空格去除。 |
46 |
static String valueOf(primitive data type x) 返回傳遞的資料類型參數的字串表示形式。 |