湖南省住房和城鄉(xiāng)建設(shè)網(wǎng)站網(wǎng)絡(luò)seo推廣培訓
前言
本章介紹Java的Character 類和String 類。
Java Character 類
Character 類用于對單個字符進行操作。
Character 類在對象中包裝一個基本類型 char 的值
實例
char ch = 'a';// Unicode 字符表示形式
char uniChar = '\u039A'; // 字符數(shù)組
char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };
然而,在實際開發(fā)過程中,我們經(jīng)常會遇到需要使用對象,而不是內(nèi)置數(shù)據(jù)類型的情況。為了解決這個問題,Java語言為內(nèi)置數(shù)據(jù)類型char提供了包裝類Character類。
Character類提供了一系列方法來操縱字符。你可以使用Character的構(gòu)造方法創(chuàng)建一個Character類對象,例如:
Character ch = new Character('a');
在某些情況下,Java編譯器會自動創(chuàng)建一個Character對象。
例如,將一個char類型的參數(shù)傳遞給需要一個Character類型參數(shù)的方法時,那么編譯器會自動地將char類型參數(shù)轉(zhuǎn)換為Character對象。 這種特征稱為裝箱,反過來稱為拆箱。
實例
// 原始字符 'a' 裝箱到 Character 對象 ch 中
Character ch = 'a';// 原始字符 'x' 用 test 方法裝箱
// 返回拆箱的值到 'c'
char c = test('x');
轉(zhuǎn)義序列
前面有反斜杠(\)的字符代表轉(zhuǎn)義字符,它對編譯器來說是有特殊含義的。
下面列表展示了Java的轉(zhuǎn)義序列:
轉(zhuǎn)義序列 | 描述 |
---|---|
\t | 在文中該處插入一個tab鍵 |
\b | 在文中該處插入一個后退鍵 |
\n | 在文中該處換行 |
\r | 在文中該處插入回車 |
\f | 在文中該處插入換頁符 |
’ | 在文中該處插入單引號 |
" | 在文中該處插入雙引號 |
\ | 在文中該處插入反斜杠 |
實例
當打印語句遇到一個轉(zhuǎn)義序列時,編譯器可以正確地對其進行解釋。
以下實例轉(zhuǎn)義雙引號并輸出:
Test.java 文件代碼:
public class Test {public static void main(String[] args) {System.out.println("訪問\"csdn教程!\"");}
}
以上實例編譯運行結(jié)果如下:
訪問"csdn教程!"
Character 方法
下面是Character類的方法:
序號 | 方法與描述 |
---|---|
1 | isLetter() 是否是一個字母 |
2 | isDigit() 是否是一個數(shù)字字符 |
3 | isWhitespace() 是否是一個空白字符 |
4 | isUpperCase() 是否是大寫字母 |
5 | isLowerCase() 是否是小寫字母 |
6 | toUpperCase() 指定字母的大寫形式 |
7 | toLowerCase() 指定字母的小寫形式 |
8 | toString() 返回字符的字符串形式,字符串的長度僅為1 |
Java String 類
字符串廣泛應(yīng)用 在 Java 編程中,在 Java 中字符串屬于對象,Java 提供了 String 類來創(chuàng)建和操作字符串。
創(chuàng)建字符串
創(chuàng)建字符串最簡單的方式如下:
String str = "csdn";
在代碼中遇到字符串常量時,這里的值是 “csdn”,編譯器會使用該值創(chuàng)建一個 String 對象。
和其它對象一樣,可以使用關(guān)鍵字和構(gòu)造方法來創(chuàng)建 String 對象。
用構(gòu)造函數(shù)創(chuàng)建字符串:
String str2=new String("csdn");
String 創(chuàng)建的字符串存儲在公共池中,而 new 創(chuàng)建的字符串對象在堆上:
String s1 = "csdn"; // String 直接創(chuàng)建
String s2 = "csdn"; // String 直接創(chuàng)建
String s3 = s1; // 相同引用
String s4 = new String("csdn"); // String 對象創(chuàng)建
String s5 = new String("csdn"); // String 對象創(chuàng)建
String 類有 11 種構(gòu)造方法,這些方法提供不同的參數(shù)來初始化字符串,比如提供一個字符數(shù)組參數(shù):
StringDemo.java 文件代碼:
public class StringDemo{public static void main(String args[]){char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};String helloString = new String(helloArray); System.out.println( helloString );}
}
以上實例編譯運行結(jié)果如下:
csdn
注意:String 類是不可改變的,所以你一旦創(chuàng)建了 String 對象,那它的值就無法改變了(詳看筆記部分解析)。
如果需要對字符串做很多修改,那么應(yīng)該選擇使用 StringBuffer & StringBuilder 類。
字符串長度
用于獲取有關(guān)對象的信息的方法稱為訪問器方法。
String 類的一個訪問器方法是 length() 方法,它返回字符串對象包含的字符數(shù)。
下面的代碼執(zhí)行后,len 變量等于 14:
StringDemo.java 文件代碼:
public class StringDemo {public static void main(String args[]) {String site = "www.csdn.com";int len = site.length();System.out.println( "csdn教程網(wǎng)址長度 : " + len );}
}
以上實例編譯運行結(jié)果如下:
csdn教程網(wǎng)址長度 : 14
連接字符串
String 類提供了連接兩個字符串的方法:
string1.concat(string2);
返回 string2 連接 string1 的新字符串。也可以對字符串常量使用 concat() 方法,如:
"我的名字是 ".concat("csdn");
更常用的是使用’+'操作符來連接字符串,如:
"Hello," + " csdn" + "!"
結(jié)果如下:
"Hello, csdn!"
下面是一個例子:
StringDemo.java 文件代碼:
public class StringDemo {public static void main(String args[]) { String string1 = "csdn教程網(wǎng)址:"; System.out.println("1、" + string1 + "www.csdn.com"); }
}
以上實例編譯運行結(jié)果如下:
1、csdn教程網(wǎng)址:www.csdn.com
創(chuàng)建格式化字符串
我們知道輸出格式化數(shù)字可以使用 printf() 和 format() 方法。
String 類使用靜態(tài)方法 format() 返回一個String 對象而不是 PrintStream 對象。
String 類的靜態(tài)方法 format() 能用來創(chuàng)建可復用的格式化字符串,而不僅僅是用于一次打印輸出。
如下所示:
System.out.printf("浮點型變量的值為 " +"%f, 整型變量的值為 " +" %d, 字符串變量的值為 " +"is %s", floatVar, intVar, stringVar);
你也可以這樣寫
String fs;
fs = String.format("浮點型變量的值為 " +"%f, 整型變量的值為 " +" %d, 字符串變量的值為 " +" %s", floatVar, intVar, stringVar);
String 方法
下面是 String 類支持的方法,更多詳細,參看 Java String API 文檔:
SN(序號) | 方法描述 |
---|---|
1 | char charAt(int index) 返回指定索引處的 char 值。 |
2 | int compareTo(Object o) 把這個字符串和另一個對象比較。 |
3 | int compareTo(String anotherString) 按字典順序比較兩個字符串。 |
4 | int compareToIgnoreCase(String str) 按字典順序比較兩個字符串,不考慮大小寫。 |
5 | String concat(String str) 將指定字符串連接到此字符串的結(jié)尾。 |
6 | boolean contentEquals(StringBuffer sb) 當且僅當字符串與指定的StringBuffer有相同順序的字符時候返回真。 |
7 | static String copyValueOf(char[] data) 返回指定數(shù)組中表示該字符序列的 String。 |
8 | static String copyValueOf(char[] data, int offset, int count) 返回指定數(shù)組中表示該字符序列的 String。 |
9 | boolean endsWith(String suffix) 測試此字符串是否以指定的后綴結(jié)束。 |
10 | boolean equals(Object anObject) 將此字符串與指定的對象比較。 |
11 | boolean equalsIgnoreCase(String anotherString) 將此 String 與另一個 String 比較,不考慮大小寫。 |
12 | byte[] getBytes() 使用平臺的默認字符集將此 String 編碼為 byte 序列,并將結(jié)果存儲到一個新的 byte 數(shù)組中。 |
13 | byte[] getBytes(String charsetName) 使用指定的字符集將此 String 編碼為 byte 序列,并將結(jié)果存儲到一個新的 byte 數(shù)組中。 |
14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 將字符從此字符串復制到目標字符數(shù)組。 |
15 | int hashCode() 返回此字符串的哈希碼。 |
16 | int indexOf(int ch) 返回指定字符在此字符串中第一次出現(xiàn)處的索引。 |
17 | int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出現(xiàn)指定字符處的索引,從指定的索引開始搜索。 |
18 | int indexOf(String str) 返回指定子字符串在此字符串中第一次出現(xiàn)處的索引。 |
19 | int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出現(xiàn)處的索引,從指定的索引開始。 |
20 | String intern() 返回字符串對象的規(guī)范化表示形式。 |
21 | int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出現(xiàn)處的索引。 |
22 | int lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最后一次出現(xiàn)處的索引,從指定的索引處開始進行反向搜索。 |
23 | int lastIndexOf(String str) 返回指定子字符串在此字符串中最右邊出現(xiàn)處的索引。 |
24 | int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出現(xiàn)處的索引,從指定的索引開始反向搜索。 |
25 | int length() 返回此字符串的長度。 |
26 | boolean matches(String regex) 告知此字符串是否匹配給定的正則表達式。 |
27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測試兩個字符串區(qū)域是否相等。 |
28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 測試兩個字符串區(qū)域是否相等。 |
29 | String replace(char oldChar, char newChar) 返回一個新的字符串,它是通過用 newChar 替換此字符串中出現(xiàn)的所有 oldChar 得到的。 |
30 | String replaceAll(String regex, String replacement) 使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串。 |
31 | String replaceFirst(String regex, String replacement) 使用給定的 replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。 |
32 | String[] split(String regex) 根據(jù)給定正則表達式的匹配拆分此字符串。 |
33 | String[] split(String regex, int limit) 根據(jù)匹配給定的正則表達式來拆分此字符串。 |
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() 將此字符串轉(zhuǎn)換為一個新的字符數(shù)組。 |
40 | String toLowerCase() 使用默認語言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為小寫。 |
41 | String toLowerCase(Locale locale) 使用給定 Locale 的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為小寫。 |
42 | String toString() 返回此對象本身(它已經(jīng)是一個字符串!)。 |
43 | String toUpperCase() 使用默認語言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為大寫。 |
44 | String toUpperCase(Locale locale) 使用給定 Locale 的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為大寫。 |
45 | String trim() 返回字符串的副本,忽略前導空白和尾部空白。 |
46 | static String valueOf(primitive data type x) 返回給定data type類型x參數(shù)的字符串表示形式。 |
47 | contains(CharSequence chars) 判斷是否包含指定的字符系列。 |
48 | isEmpty() 判斷字符串是否為空。 |