# Java String類
字符串廣泛應用在Java編程中,在Java中字符串屬于對象,Java提供了String類來創建和操作字符串。
## 創建字符串
創建字符串最簡單的方式如下:
```
String greeting = "Hello world!";
```
在代碼中遇到字符串常量時,這里的值是"Hello world!",編譯器會使用該值創建一個String對象。
和其它對象一樣,可以使用關鍵字和構造方法來創建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 );
}
}
```
以上實例編譯運行結果如下:
```
hello.
```
**注意:**String類是不可改變的,所以你一旦創建了String對象,那它的值就無法改變了。 如果需要對字符串做很多修改,那么應該選擇使用[StringBuffer & StringBuilder 類](java-stringbuffer.html "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 Length is : 17
```
## 連接字符串
String類提供了連接兩個字符串的方法:
```
string1.concat(string2);
```
返回string2連接string1的新字符串。也可以對字符串常量使用concat()方法,如:
```
"My name is ".concat("Zara");
```
更常用的是使用'+'操作符來連接字符串,如:
```
"Hello," + " world" + "!"
```
結果如下:
```
"Hello, world!"
```
下面是一個例子:
```
public class StringDemo {
public static void main(String args[]) {
String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");
}
}
```
以上實例編譯運行結果如下:
```
Dot saw I was Tod
```
## 創建格式化字符串
我們知道輸出格式化數字可以使用printf()和format()方法。String類使用靜態方法format()返回一個String對象而不是PrintStream對象。
String類的靜態方法format()能用來創建可復用的格式化字符串,而不僅僅是用于一次打印輸出。如下所示:
```
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類支持的方法,更多詳細,參看Java API文檔:
| 方法 | 描述 |
| --- | --- |
| char charAt(int index) | 返回指定索引處的 char 值。 |
| int compareTo(Object o) | 把這個字符串和另一個對象比較。 |
| int compareTo(String anotherString) | 按字典順序比較兩個字符串。 |
| int compareToIgnoreCase(String str) | 按字典順序比較兩個字符串,不考慮大小寫。 |
| String concat(String str) | 將指定字符串連接到此字符串的結尾。 |
| boolean contentEquals(StringBuffer sb) | 當且僅當字符串與指定的StringButter有相同順序的字符時候返回真。 |
| static String copyValueOf(char[] data) | 返回指定數組中表示該字符序列的 String。 |
| static String copyValueOf(char[] data, int offset, int count) | 返回指定數組中表示該字符序列的 String。 |
| boolean endsWith(String suffix) | 測試此字符串是否以指定的后綴結束。 |
| boolean equals(Object anObject) | 將此字符串與指定的對象比較。 |
| boolean equalsIgnoreCase(String anotherString) | 將此 String 與另一個 String 比較,不考慮大小寫。 |
| byte[] getBytes() | ?使用平臺的默認字符集將此 String 編碼為 byte 序列,并將結果存儲到一個新的 byte 數組中。 |
| byte[] getBytes(String charsetName) | 使用指定的字符集將此 String 編碼為 byte 序列,并將結果存儲到一個新的 byte 數組中。 |
| void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 將字符從此字符串復制到目標字符數組。 |
| int hashCode() | 返回此字符串的哈希碼。 |
| int indexOf(int ch) | 返回指定字符在此字符串中第一次出現處的索引。 |
| int indexOf(int ch, int fromIndex) | 返回在此字符串中第一次出現指定字符處的索引,從指定的索引開始搜索。 |
| int indexOf(String str) | ?返回指定子字符串在此字符串中第一次出現處的索引。 |
| int indexOf(String str, int fromIndex) | 返回指定子字符串在此字符串中第一次出現處的索引,從指定的索引開始。 |
| String intern() | ?返回字符串對象的規范化表示形式。 |
| int lastIndexOf(int ch) | ?返回指定字符在此字符串中最后一次出現處的索引。 |
| int lastIndexOf(int ch, int fromIndex) | 返回指定字符在此字符串中最后一次出現處的索引,從指定的索引處開始進行反向搜索。 |
| int lastIndexOf(String str) | 返回指定子字符串在此字符串中最右邊出現處的索引。 |
| int lastIndexOf(String str, int fromIndex) | ?返回指定子字符串在此字符串中最后一次出現處的索引,從指定的索引開始反向搜索。 |
| int length() | 返回此字符串的長度。 |
| boolean matches(String regex) | 告知此字符串是否匹配給定的正則表達式。 |
| boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) | 測試兩個字符串區域是否相等。 |
| boolean regionMatches(int toffset, String other, int ooffset, int len) | 測試兩個字符串區域是否相等。 |
| String replace(char oldChar, char newChar) | 返回一個新的字符串,它是通過用 newChar 替換此字符串中出現的所有 oldChar 得到的。 |
| String replaceAll(String regex, String replacement) | 使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串。 |
| String replaceFirst(String regex, String replacement) | ?使用給定的 replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。 |
| String[] split(String regex) | 根據給定正則表達式的匹配拆分此字符串。 |
| String[] split(String regex, int limit) | 根據匹配給定的正則表達式來拆分此字符串。 |
| boolean startsWith(String prefix) | 測試此字符串是否以指定的前綴開始。 |
| boolean startsWith(String prefix, int toffset) | 測試此字符串從指定索引開始的子字符串是否以指定前綴開始。 |
| CharSequence subSequence(int beginIndex, int endIndex) | ?返回一個新的字符序列,它是此序列的一個子序列。 |
| String substring(int beginIndex) | 返回一個新的字符串,它是此字符串的一個子字符串。 |
| String substring(int beginIndex, int endIndex) | 返回一個新字符串,它是此字符串的一個子字符串。 |
| char[] toCharArray() | 將此字符串轉換為一個新的字符數組。 |
| String toLowerCase() | 使用默認語言環境的規則將此 String 中的所有字符都轉換為小寫。 |
| String toLowerCase(Locale locale) | ?使用給定 Locale 的規則將此 String 中的所有字符都轉換為小寫。 |
| String toString() | ?返回此對象本身(它已經是一個字符串!)。 |
| String toUpperCase() | 使用默認語言環境的規則將此 String 中的所有字符都轉換為大寫。 |
| String toUpperCase(Locale locale) | 使用給定 Locale 的規則將此 String 中的所有字符都轉換為大寫。 |
| String trim() | 返回字符串的副本,忽略前導空白和尾部空白。 |
| static String valueOf(primitive data type x) | 返回給定data type類型x參數的字符串表示形式。 |
- Java 基礎
- Java 簡介
- Java開發環境配置
- Java基礎語法
- Java對象和類
- Java基本數據類型
- Java變量類型
- Java修飾符
- Java運算符
- Java循環結構 - for, while 及 do...while
- Java分支結構 - if...else/switch
- Java Number類
- Java Character類
- Java String類
- Java StringBuffer和StringBuilder類
- Java 數組
- Java 日期時間
- Java正則表達式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 異常處理
- Java 面向對象
- Java 繼承
- Java 重寫(Override)與重載(Overload)
- Java 多態
- Java 抽象類
- Java 接口
- Java 包(package)
- Java 高級教程
- Java 數據結構
- Java Enumeration接口
- Java Bitset類
- Java Vector 類
- Java Stack 類
- Java Dictionary 類
- Java Hashtable 接口
- Java Properties 接口
- Java 集合框架
- Java 泛型
- Java序列化
- Java 網絡編程
- Java 發送郵件
- Java 多線程編程
- Java Applet基礎
- Java 文檔注釋
- Servlet 教程
- Servlet 簡介
- Servlet 環境設置
- Servlet 生命周期
- Servlet 實例
- Servlet 表單數據
- Servlet 客戶端 HTTP 請求
- Servlet 服務器 HTTP 響應
- Servlet HTTP 狀態碼
- Servlet 編寫過濾器
- Servlet 異常處理
- Servlet Cookies 處理
- Servlet Session 跟蹤
- Servlet 數據庫訪問
- Servlet 文件上傳
- Servlet 處理日期
- Servlet 網頁重定向
- Servlet 點擊計數器
- Servlet 自動刷新頁面
- Servlet 發送電子郵件
- Servlet 包
- Servlet 調試
- Servlet 國際化
- JSP 基礎
- JSP 簡介
- JSP 開發環境搭建
- JSP 結構
- JSP 生命周期
- JSP 語法
- JSP 指令
- JSP 動作元素
- JSP 動作元素
- JSP 隱含對象
- JSP 客戶端請求
- JSP 服務器響應
- JSP HTTP 狀態碼
- JSP 表單處理
- JSP 過濾器
- JSP Cookies 處理
- JSP Session
- JSP 文件上傳
- JSP 日期處理
- JSP 頁面重定向
- JSP 點擊量統計
- JSP 自動刷新
- JSP 發送郵件
- JSP 高級教程
- JSP 標準標簽庫(JSTL)
- JSP 連接數據庫
- JSP XML 數據處理
- JSP JavaBean
- JSP 自定義標簽
- JSP 表達式語言
- JSP 異常處理
- JSP 調試
- JSP 國際化
- 免責聲明