字符串是有限個字符的有序集合,前面講的char類型用於表示和存儲單個字符,字符串相當於幾個或多個char類型的有序集合,用於表示和存儲多個有序的字符序列。例如:「I want to learn Java programming」、「我要學Java編程」、「3+5=8」、「abc」等等。
四則運算器程序需要存儲用戶輸入的計算表達式,計算表達式由多個字符組合而成,用前面所掌握的Java數據類型,不適合存儲計算表達式。程序需要一個新的類型來存儲計算表達式,這個新的類型就是字符串類型。
Java語言的字符串類型同前面介紹的Java基礎類型不太一樣,Java沒有給字符串類型定義一個關鍵字,用於聲明字符串類型,而是通過類的方式提供對字符串的操作和存儲。在Java語言中,字符串類型被定義為類,類名為「String」,該類提供了多個構造方法和字符串操作方法,用於滿足對字符串不同的處理要求。
String類的初始化
String類可用字符串常量對其初始化。例如:
也可以調用其構造方法來進行,String類提供了多個構造方法對其初始化,下面列舉了幾個主要的構造方法:
(1)方法名稱:String()
方法說明:構造一個空串(不包含任何字符)
方法示例:String szWelcome = new String();
(2)方法名稱:String(String original)
方法說明:用original內容初始化新創建的字符串
方法示例:
String szTemp = 「歡迎加入編程小組」;
String szWelcome = new String(szTemp);
(3)方法名稱:String(byte[] bytes))
方法說明:用字符數組(後面會講解數組結構)始化新創建的字符串
方法示例:
char chTemp[] ={『歡』,』迎』 ,』加』,』入』,』編』,』程』,』小』,』組』};
String szWelcome = new String(chTemp);
示例1:String類的初始化
在D盤Java目錄下,新建「StringInitSample.java」文件。用記事本打開「StringInitSample.java」文件,輸入以下代碼:
代碼結構分析
程序功能主要是演示String類聲明及初始化的使用。
程序使用了String類提供的三種不同的初始化方法。第一種方法是通過字符常量賦值初始化;第二種方法是通過new運算符(後面會講解)實例化String類,並以傳入的已聲明的字符串初始化;第三種方法是通過new運算符實例化String類,並以傳入的字符型數組初始化。
編譯「StringInitSample.java」文件,在命令行窗口輸入「javac StringInitSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java StringInitSample」運行Java程序,命令行窗口顯示如下信息:
從上述結果可以看出,用相同的內容對String類進行不同的初始化,雖然初始化方法不太,但其內容是相同的。
String類的方法
String類提供了多個方法,用於完成對字符串查找、替換、比較、連接、複製、分割等操作。下面列舉了幾個主要的操作方法,其它方法請參考Java API:
(1)方法名稱:charAt(int index)
方法說明:返回由索引號指定的單個字符,索引是單個字符在字符序列的位置,String類的序列號從0開始。
方法示例:
String szWelcome = 「歡迎加入編程小組」;
//返回索引號為1的字符,當前應返回字符『迎』
char chTemp = szWelcome. charAt(1);
(2)方法名稱:length()
方法說明:獲取字符串的長度,String包含的字符的個數。
方法示例:
String szWelcome = 「歡迎加入編程小組」;
//返回字符串長度,當前返回數值8
int nLength = szWelcome. length()
(3)方法名稱:indexOf(int ch)
方法說明:查找字符串是否包含ch字符,返回字符的整型數值。若包含返回索引號,否則返回-1。
方法示例:
String szWelcome = 「歡迎加入編程小組」;
//查找字符』編』,當前返回4,索引號從0開始
int nIndex = szWelcome. indexOf((int)『編』)
//或
char chTemp = 『編』;
int nIndex = szWelcome. indexOf((int) chTemp)
備註:
該方法還可以支持傳入字符串類型以及從指定位置開始查找,詳情請參考Java API
(4)方法名稱:equals(Object anObject)
方法說明:比較兩個字符串內容是否相同,若內容相同返回true,否則返回false。傳入的參數Object類抽象了Java的所有類,也包括String類,在這裡可以認為是String類。關於類及類的抽象、繼承後面會講述。
方法示例:
String szWelcome1 = 「歡迎加入編程小組」;
String szWelcome2 = 「歡迎加入Java編程小組」;
//比較szWelcome1和szWelcome2的內容是否相同,當前返回false
boolean bEqual = szWelcome. Equals(szWelcome2);
示例2:String類的查找及比較操作
在D盤Java目錄下,新建「StringFindSample.java」文件。用記事本打開「StringFindSample.java」文件,輸入以下代碼:
代碼結構分析
程序功能主要是演示String類的查找、獲取長度、比較操作。
程序聲明了三個String類變量,其中,szWelcome1和szWelcome2賦予相同的值,用於內容比較操作。
語句「int nIndex = szWelcome1.indexOf('編');」,聲明了一個整型變量,用於接收查找方法indexOf返回的索引號,並通過printf方法格式化輸出。
語句「int nLength = szWelcome1.length();」,聲明了一個整型變量,用於接收length方法返回的字符串長度,並通過printf方法格式化輸出。
語句「boolean bEqual = szWelcome1.equals(szWelcome2);」,聲明了一個boolean型變量,用於接收equals方法返回的布爾值,並通過printf方法格式化輸出。
編譯「StringFindSample.java」文件,在命令行窗口輸入「javac StringFindSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java StringFindSample」運行Java程序,命令行窗口顯示如下信息:
從上述結果可以看出,String類的length返回字符串包含的字符個數,indexOf返回字符所在字符串的索引位置,索引從0開始,因此查找字符『編』時,返回索引4。
在實際編程中,Java的String類是使用頻率非常高的類,需要深入理解和掌握,弄清楚String提供的各種操作方法和技巧。四則運算器解析計算表達式時,可以通過String的length方法獲取字符串長度,然後循環遍歷表達式的每個字符,並應用equals方法判斷是數字還是運算符,並做相應的處理。
編寫一個程序,要求獲取用戶輸入的字符串,並輸出字符串的長度。