更新時間:2020-01-08 來源:黑馬程序員 瀏覽量:
在應(yīng)用程序中經(jīng)常會用到字符串,所謂字符串就是指一連串的字符,它是由許多單個字符連接而成的,如多個英文字母所組成的一個英文單詞。字符串中可以包含任意字符,這些字符必須包含在一對雙引號“”之內(nèi),例如“ab”。在Java中定義了String和StringBuffer兩個類來封裝字符串,并提供了一系列操作字符串的方法,它們都位于java.lang包中,因此不需要導(dǎo)包就可以直接使用。下面我們詳細介紹String類。
String類的初始化
在操作String類之前,首先需要對String類進行初始化,在Java中可以通過以下兩種方式對 String類進行初始化,具體如下。
1. 使用字符串常量直接初始化一個String對象,具體代碼如下:
String strl="abc";
由于String類比較常用,所以提供了這種簡化的語法,用于創(chuàng)建并初始化String對象,其中“abc”表示一個字符串常量。
2. 使用String的構(gòu)造方法初始化字符串對象,String類的構(gòu)造方法下表所示。
方法聲明 |
功能描述 |
String() |
創(chuàng)建一個內(nèi)容為空的字符串 |
String(char[] vaule) |
根據(jù)指定的字符組創(chuàng)建對象 |
String(String value) |
根據(jù)指定的字符串內(nèi)容創(chuàng)建對象 |
上面表中列出了String類的三種構(gòu)造方法,通過調(diào)用不同參數(shù)的構(gòu)造方法便可完成String類的初始化。接下來通過一個案例來演示。
public class string01 {
public static void main(String[] args) throws Exception {
//創(chuàng)建一個空對象、
String str1=new String();
//創(chuàng)建一個內(nèi)容為abcd的字符串
String str2=new String("abcd");
//創(chuàng)建一個內(nèi)容為字符數(shù)組的字符串
char[] charArray=new char[]{'D','E','F'};
String str3=new String(charArray);
System.out.println("a"+str1+"b");
System.out.println(str2);
System.out.println(str3);
}
}
運行結(jié)果:
String類的常見操作匯總
String類在實際開發(fā)中的應(yīng)用非常廣泛,因此靈活地使用String類是非常中要的。下面我們介紹String類常用類的一些方法。
int indexOf(int ch)
功能:返回指定字符在此字符串中第一次出現(xiàn)處的索引
int lastIndexOf(int ch)
功能:返回指定字符在此字符串中最后一次出現(xiàn)處的索引
char charAt(int index)
功能:返回字符串中index位置上的字符,其中index的取值范圍是:0~(字符串長度-1)
boolean endsWith(String suffix)
功能:判斷此字符串是否以指定的字符串結(jié)尾
int length()
功能:返回此字符串的長度
boolean equals(Object anObject)
功能:將此字符串與指定的字符串比較
boolean isEmpty()
功能:當且僅當字符串長度為0時返回true
boolean startsWith(String prefix)
功能:判斷此字符串是否以指定的字符串開始
boolean contains(CharSequence cs)
功能:判斷此字符申中是否包含指定的字符序列
String toLowerCase()
功能:使用默認語言環(huán)境的規(guī)則將String中的所有字符都轉(zhuǎn)換為小寫
String toUpperCase()
功能:使用默認語言環(huán)境的規(guī)則將String中的所有字符都轉(zhuǎn)換為大寫
String valueOf(int i)
功能:返回int參數(shù)的字符表現(xiàn)形式
char[] toCharArray()
功能:將此字符串轉(zhuǎn)化為一個字符數(shù)組
String repalce(CharSequence oldstr,CharSequence newstr)
功能:返回一個新的字符串,它是通過用newstr替換此字符串中出現(xiàn)的所有oldstr得到的
String[] split(String regex)
功能:根據(jù)參數(shù)regex將原來的字符串分割為若干個子字符串
String substring(int beginIndex)
功能:返回一個新字符串,它包含字符串中索引beginIndex后的所有字符
String substring(int beginIndex,int endIndex)
功能:返回一個新字符串,它包含此字符串中從索引beginIndex到索引endIndex之間的所有字符。
String trim()
功能:返回一個新字符串,它去除了原字符串首尾的空格
上面我們列出了String類的常見方法,其中有些方法無法通過描述解釋清楚,下面我們就通過實例來具體學習。
1、字符串的基本操作
在程序中,需要對字符串進行一些基本操作,如獲得字符串長度、獲得指定位置的字符等。 String類針對每一個操作都提供了對應(yīng)的方法,接下來通過一個案例來學習下這些方法的使用。
public class string02 {
public static void main(String[] args) {
String s="abcdedcba"; //聲明字符串
System.out.print("字符串的長度為:"+s.length()); //獲取字符串的長度,即字符個數(shù)
System.out.println("字符串中第一個字符:"+s.charAt(0));
System.out.println("字符c第一次出現(xiàn)的位置:"+s.indexOf('c'));
System.out.println("字符c最后一次出現(xiàn)的位置:"+s.lastIndexOf('c'));
}
}
運行結(jié)果如下:
2、字符串的轉(zhuǎn)換操作
程序開發(fā)中,經(jīng)常需要對字符串進行轉(zhuǎn)換操作,例如將字符串轉(zhuǎn)換成數(shù)組的形式,將字符串中的字符進行大小寫轉(zhuǎn)換等。接下來通過一個案例來演示字符串的轉(zhuǎn)換操作。
public class string03 {
public static void main(String[] args) {
String str="abcd";
System.out.print("將字符串轉(zhuǎn)為字符串數(shù)組的結(jié)果");
char[] charArray=str.toCharArray(); //字符串轉(zhuǎn)為字符組
for(int i=0;i<charArray.length;i++){
if (i !=charArray.length-1){
//如果不是數(shù)組的最后一個元素,在元素后面加逗號
System.out.print(charArray[i]+",");
}else{
//數(shù)組的最后一個元素后面不加逗號
System.out.println(charArray[i]);
}
}
System.out.println("將int值轉(zhuǎn)為String類型之后的結(jié)果"+String.valueOf(12));
System.out.println("將字符轉(zhuǎn)換成大寫之后的結(jié)果"+str.toUpperCase());
}
}
運行結(jié)果如下:
在上面例子中,使用String類的toCharArray()方法將一個字符串轉(zhuǎn)為一個字符數(shù)組,靜態(tài)方法 valueOf()將一個int類型的整數(shù)轉(zhuǎn)為字符串,toUpperCase()方法將字符串中的字符都轉(zhuǎn)為大寫。其中valueOf()方法有很多重載的形式,float、double、char等其他基本類型的數(shù)據(jù)都可以通過該方法轉(zhuǎn)為String字符串類型。
3、字符串的替換和去除空格的方法
程序開發(fā)中,用戶輸入數(shù)據(jù)時經(jīng)常會有一些錯誤和空格,這時可以使用String類的replace()和trim()方法,進行字符串的替換和去除空格操作,接下來通過一個案例來介紹。
public class string04 {
public static void main(String[] args) {
String s="itcast";
//字符串替換操作
System.out.println("將it替換成cn.it的結(jié)果:"+s.replace("it","cn.it"));
//去除字符串空格操作
String s1=" i t c a s t ";
System.out.println("去除字符串中兩端的空格后的結(jié)果:"+s1.trim());
System.out.println("去除字符串所空格的結(jié)果:"+s1.replace(" ",""));
}
}
運行結(jié)果為:
上面案例中調(diào)用了String類的兩個方法,其中replace()方法用于將字符串中所有與指定字符串匹配的子串替換成另一個字符串,trim()方法用于去除字符串中的空格。需要注意的是,該方法只能去除兩端的空格,不能去除中間的空格。若想去除字符串中間的空格,則可以調(diào)用String類的 replace()方法。
4、字符串的判斷操作
操作字符串時,經(jīng)常需要對字符串進行一些判斷,如判斷字符串是否以指定的字符串開始、結(jié)束,是否包含指定的字符串,字符串是否為空等。在String類中針對字符串的判斷操作提供了很多方法,接下來通過一個案例來學習。
public class string05_1 {
public static void main(String[] args) {
String s1="String";
String s2="Str";
System.out.println("判斷是否以字符串str開頭:"+s1.startsWith("Str"));
System.out.println("判斷是否以字符串ng結(jié)尾:"+s1.endsWith("ng"));
System.out.println("判斷是否以包含字符串tri:"+s1.contains("tri"));
System.out.println("判斷字符串是否為空:"+s1.isEmpty());
System.out.println("判斷兩個字符串是否相等:"+s1.equals("s2"));
}
}
運行結(jié)果如下:
上面案例中涉及到的方法都是用于判斷字符串的,并且返回值均為boolean類型。其中,equals()方法比較重要,該方法將父類Object中equals()方法進行了重寫。在程序中可以通過和equals()兩種方式對字符串進行比較,但這兩種方式有明顯的區(qū)別。equals()方法用于比較兩個字符串中的字符是否相等,==方法用于比較兩個字符串對象的地址是否相同。對于兩個字符串對象,當它們的字符內(nèi)容完全相同時,使用equals判斷結(jié)果會為true,但使用==判斷時,結(jié)果一定為false。為了便于理解,下面給出示例代碼:
public class string05_2 {
public static void main(String[] args) {
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1==str2); //結(jié)果為false,因為str1和str2是兩個對象
System.out.println(str1.equals(str2)); //結(jié)果為true,應(yīng)為str1和str2字符內(nèi)容相同
}
}
運行結(jié)果為:
5、字符串的截取和分隔
在String類中針對字符串的截取和分割操作提供了兩個方法,其中,substring()方法用于截取字符串的一部分,split()方法可以將字符串按照某個字符進行分割。接下來通過一個案例來學習。
public class string06 {
public static void main(String[] args) {
String str="羽毛球-籃球-乒乓球";
//下面是字符串截取操作
System.out.println("從第5個字符截取到末尾的結(jié)果:"+str.substring(4));
System.out.println("從第5個字符截取到第6個字符的結(jié)果:"+str.substring(4,6));
//下面是字符分隔操作
System.out.print("分隔后的字符串數(shù)組中的元素一次為:");
String[] strArray=str.split("-"); //將字符串轉(zhuǎn)換為字符串數(shù)組
for (int i=0;i<strArray.length;i++){
if (i !=strArray.length-1) {
//如果不是數(shù)組最后一個元素,在元后面加逗號
System.out.print(strArray[i]+",");
} else {
//數(shù)組的最后一個元素后面不加逗號
System.out.println(strArray[i]);
}
}
}
}
運行結(jié)果為:
上面案例中。調(diào)用了String類中重載的兩個substring()方法。在第5行代碼調(diào)用substring()方法時,傳入?yún)?shù)4,即截取字符串中第5個字符以及之后的所有字符,因為字符串中的字符,索引是從0開始的。第6行代碼調(diào)用substring()方法時傳入兩個參數(shù)4和6,即截取第5個和第6個字符,因為字符串在截取時,只包括開始索引,不包括結(jié)束索引。上面案例中的第9~18行演示了split()方法的用法,該方法會根據(jù)指定的符號將字符串分割成三部分,并存放到一個String類型的數(shù)組當中。
String宇符串在獲取某個字符時,會用到字符的索引,當訪問字符串中的字符時,如果字符的索引不存在,則會發(fā)生StringIndexOutOfBoundsException(字符串角標越界異常),接下來通過一個案例來演示。
public class string07 {
public static void main(String[] args) {
String s="abcdedsba";
System.out.println(s.charAt(9));
}
}
運行結(jié)果為:
通過運行結(jié)果可以看出,訪問字符串中的字符時,不能超出字符的索引范圍,否則會出現(xiàn)異常,這與數(shù)組中的角標越界異常非常相似。
猜你喜歡:
java培訓(xùn)課程
java基礎(chǔ)教程下載