首頁(yè)新聞動(dòng)態(tài)正文

Java String類(lèi)的操作有哪些?[java培訓(xùn)]

更新時(shí)間:2020-01-08 來(lái)源:黑馬程序員 瀏覽量:

1577349771854_學(xué)IT就到黑馬程序員.gif

在應(yīng)用程序中經(jīng)常會(huì)用到字符串,所謂字符串就是指一連串的字符,它是由許多單個(gè)字符連接而成的,如多個(gè)英文字母所組成的一個(gè)英文單詞。字符串中可以包含任意字符,這些字符必須包含在一對(duì)雙引號(hào)“”之內(nèi),例如“ab”。在Java中定義了String和StringBuffer兩個(gè)類(lèi)來(lái)封裝字符串,并提供了一系列操作字符串的方法,它們都位于java.lang包中,因此不需要導(dǎo)包就可以直接使用。下面我們?cè)敿?xì)介紹String類(lèi)。

 

String類(lèi)的初始化


 

在操作String類(lèi)之前,首先需要對(duì)String類(lèi)進(jìn)行初始化,在Java中可以通過(guò)以下兩種方式對(duì) String類(lèi)進(jìn)行初始化,具體如下。

 

1.  使用字符串常量直接初始化一個(gè)String對(duì)象,具體代碼如下:

 

String strl="abc";

 

由于String類(lèi)比較常用,所以提供了這種簡(jiǎn)化的語(yǔ)法,用于創(chuàng)建并初始化String對(duì)象,其中“abc”表示一個(gè)字符串常量。

 

2.  使用String的構(gòu)造方法初始化字符串對(duì)象,String類(lèi)的構(gòu)造方法下表所示。

方法聲明

功能描述

String()

創(chuàng)建一個(gè)內(nèi)容為空的字符串

String(char[] vaule)

根據(jù)指定的字符組創(chuàng)建對(duì)象

String(String value)

根據(jù)指定的字符串內(nèi)容創(chuàng)建對(duì)象


上面表中列出了String類(lèi)的三種構(gòu)造方法,通過(guò)調(diào)用不同參數(shù)的構(gòu)造方法便可完成String類(lèi)的初始化。接下來(lái)通過(guò)一個(gè)案例來(lái)演示。

 

public class string01 {

    public static void main(String[] args) throws Exception {

        //創(chuàng)建一個(gè)空對(duì)象、

        String str1=new String();

        //創(chuàng)建一個(gè)內(nèi)容為abcd的字符串

        String str2=new String("abcd");

        //創(chuàng)建一個(gè)內(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);

    }

}

 

運(yùn)行結(jié)果:

1578465658119_string類(lèi)的常用操作01.jpg

 

String類(lèi)的常見(jiàn)操作匯總

 

String類(lèi)在實(shí)際開(kāi)發(fā)中的應(yīng)用非常廣泛,因此靈活地使用String類(lèi)是非常中要的。下面我們介紹String類(lèi)常用類(lèi)的一些方法。

 

int indexOf(int ch)

功能:返回指定字符在此字符串中第一次出現(xiàn)處的索引

 

int lastIndexOf(int ch)

功能:返回指定字符在此字符串中最后一次出現(xiàn)處的索引

 

char charAt(int index)

功能:返回字符串中index位置上的字符,其中index的取值范圍是:0~(字符串長(zhǎng)度-1)

 

boolean endsWith(String suffix)

功能:判斷此字符串是否以指定的字符串結(jié)尾

 

int length()

功能:返回此字符串的長(zhǎng)度

 

boolean equals(Object anObject)

功能:將此字符串與指定的字符串比較

 

boolean isEmpty()

功能:當(dāng)且僅當(dāng)字符串長(zhǎng)度為0時(shí)返回true

 

boolean startsWith(String prefix)

功能:判斷此字符串是否以指定的字符串開(kāi)始

 

boolean contains(CharSequence cs)

功能:判斷此字符申中是否包含指定的字符序列

 

String toLowerCase()

功能:使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將String中的所有字符都轉(zhuǎn)換為小寫(xiě)

 

String toUpperCase()

功能:使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將String中的所有字符都轉(zhuǎn)換為大寫(xiě)

 

String valueOf(int i)

功能:返回int參數(shù)的字符表現(xiàn)形式

 

char[] toCharArray()

功能:將此字符串轉(zhuǎn)化為一個(gè)字符數(shù)組

 

String repalce(CharSequence oldstr,CharSequence newstr)

功能:返回一個(gè)新的字符串,它是通過(guò)用newstr替換此字符串中出現(xiàn)的所有oldstr得到的

 

String[] split(String regex)

功能:根據(jù)參數(shù)regex將原來(lái)的字符串分割為若干個(gè)子字符串

 

String substring(int beginIndex)

功能:返回一個(gè)新字符串,它包含字符串中索引beginIndex后的所有字符

 

String substring(int beginIndex,int endIndex)

功能:返回一個(gè)新字符串,它包含此字符串中從索引beginIndex到索引endIndex之間的所有字符。

 

String trim()

功能:返回一個(gè)新字符串,它去除了原字符串首尾的空格

 

上面我們列出了String類(lèi)的常見(jiàn)方法,其中有些方法無(wú)法通過(guò)描述解釋清楚,下面我們就通過(guò)實(shí)例來(lái)具體學(xué)習(xí)。

 

1、字符串的基本操作

在程序中,需要對(duì)字符串進(jìn)行一些基本操作,如獲得字符串長(zhǎng)度、獲得指定位置的字符等。 String類(lèi)針對(duì)每一個(gè)操作都提供了對(duì)應(yīng)的方法,接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)下這些方法的使用。

 

public class string02 {

    public static void main(String[] args) {

        String s="abcdedcba";       //聲明字符串

        System.out.print("字符串的長(zhǎng)度為:"+s.length());        //獲取字符串的長(zhǎng)度,即字符個(gè)數(shù)

        System.out.println("字符串中第一個(gè)字符:"+s.charAt(0));

        System.out.println("字符c第一次出現(xiàn)的位置:"+s.indexOf('c'));

        System.out.println("字符c最后一次出現(xiàn)的位置:"+s.lastIndexOf('c'));

    }

}

 

運(yùn)行結(jié)果如下:

1578465671196_string類(lèi)的常用操作02.jpg

 

2、字符串的轉(zhuǎn)換操作

程序開(kāi)發(fā)中,經(jīng)常需要對(duì)字符串進(jìn)行轉(zhuǎn)換操作,例如將字符串轉(zhuǎn)換成數(shù)組的形式,將字符串中的字符進(jìn)行大小寫(xiě)轉(zhuǎn)換等。接下來(lái)通過(guò)一個(gè)案例來(lái)演示字符串的轉(zhuǎn)換操作。

 

public class string03 {

    public static void main(String[] args) {

         String str="abcd";

         System.out.print("將字符串轉(zhuǎn)為字符串?dāng)?shù)組的結(jié)果");

         char[] charArray=str.toCharArray();  //字符串轉(zhuǎn)為字符組

         for(int i=0;i<charArray.length;i++){

             if (i !=charArray.length-1){

             //如果不是數(shù)組的最后一個(gè)元素,在元素后面加逗號(hào)

             System.out.print(charArray[i]+",");

         }else{

             //數(shù)組的最后一個(gè)元素后面不加逗號(hào)

             System.out.println(charArray[i]);

         }

         }

         System.out.println("將int值轉(zhuǎn)為String類(lèi)型之后的結(jié)果"+String.valueOf(12));

         System.out.println("將字符轉(zhuǎn)換成大寫(xiě)之后的結(jié)果"+str.toUpperCase());

    }

 }


運(yùn)行結(jié)果如下:

1578465687521_string類(lèi)的常用操作03.jpg


在上面例子中,使用String類(lèi)的toCharArray()方法將一個(gè)字符串轉(zhuǎn)為一個(gè)字符數(shù)組,靜態(tài)方法 valueOf()將一個(gè)int類(lèi)型的整數(shù)轉(zhuǎn)為字符串,toUpperCase()方法將字符串中的字符都轉(zhuǎn)為大寫(xiě)。其中valueOf()方法有很多重載的形式,float、double、char等其他基本類(lèi)型的數(shù)據(jù)都可以通過(guò)該方法轉(zhuǎn)為String字符串類(lèi)型。

 

3、字符串的替換和去除空格的方法


程序開(kāi)發(fā)中,用戶輸入數(shù)據(jù)時(shí)經(jīng)常會(huì)有一些錯(cuò)誤和空格,這時(shí)可以使用String類(lèi)的replace()和trim()方法,進(jìn)行字符串的替換和去除空格操作,接下來(lái)通過(guò)一個(gè)案例來(lái)介紹。

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(" ",""));

    }



運(yùn)行結(jié)果為:

 

1578465698683_string類(lèi)的常用操作04.jpg


上面案例中調(diào)用了String類(lèi)的兩個(gè)方法,其中replace()方法用于將字符串中所有與指定字符串匹配的子串替換成另一個(gè)字符串,trim()方法用于去除字符串中的空格。需要注意的是,該方法只能去除兩端的空格,不能去除中間的空格。若想去除字符串中間的空格,則可以調(diào)用String類(lèi)的 replace()方法。

 

4、字符串的判斷操作

操作字符串時(shí),經(jīng)常需要對(duì)字符串進(jìn)行一些判斷,如判斷字符串是否以指定的字符串開(kāi)始、結(jié)束,是否包含指定的字符串,字符串是否為空等。在String類(lèi)中針對(duì)字符串的判斷操作提供了很多方法,接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)。


public class string05_1 {

    public static void main(String[] args) {

        String s1="String";

        String s2="Str";

        System.out.println("判斷是否以字符串str開(kāi)頭:"+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("判斷兩個(gè)字符串是否相等:"+s1.equals("s2"));

    }

}

 

運(yùn)行結(jié)果如下:

1578465710042_string類(lèi)的常用操作05.jpg


上面案例中涉及到的方法都是用于判斷字符串的,并且返回值均為boolean類(lèi)型。其中,equals()方法比較重要,該方法將父類(lèi)Object中equals()方法進(jìn)行了重寫(xiě)。在程序中可以通過(guò)和equals()兩種方式對(duì)字符串進(jìn)行比較,但這兩種方式有明顯的區(qū)別。equals()方法用于比較兩個(gè)字符串中的字符是否相等,==方法用于比較兩個(gè)字符串對(duì)象的地址是否相同。對(duì)于兩個(gè)字符串對(duì)象,當(dāng)它們的字符內(nèi)容完全相同時(shí),使用equals判斷結(jié)果會(huì)為true,但使用==判斷時(shí),結(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,因?yàn)閟tr1和str2是兩個(gè)對(duì)象

        System.out.println(str1.equals(str2)); //結(jié)果為true,應(yīng)為str1和str2字符內(nèi)容相同

    }

}

運(yùn)行結(jié)果為:

1578465226130_string類(lèi)的常用操作06.jpg

5、字符串的截取和分隔

在String類(lèi)中針對(duì)字符串的截取和分割操作提供了兩個(gè)方法,其中,substring()方法用于截取字符串的一部分,split()方法可以將字符串按照某個(gè)字符進(jìn)行分割。接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)。

public class string06 {

    public static void main(String[] args) {

        String str="羽毛球-籃球-乒乓球";

        //下面是字符串截取操作

        System.out.println("從第5個(gè)字符截取到末尾的結(jié)果:"+str.substring(4));

        System.out.println("從第5個(gè)字符截取到第6個(gè)字符的結(jié)果:"+str.substring(4,6));

        //下面是字符分隔操作

        System.out.print("分隔后的字符串?dāng)?shù)組中的元素一次為:");

        String[] strArray=str.split("-");       //將字符串轉(zhuǎn)換為字符串?dāng)?shù)組

        for (int i=0;i<strArray.length;i++){

            if (i !=strArray.length-1) {

                //如果不是數(shù)組最后一個(gè)元素,在元后面加逗號(hào)

                System.out.print(strArray[i]+",");

            } else {

                //數(shù)組的最后一個(gè)元素后面不加逗號(hào)

                System.out.println(strArray[i]);

            }

        }

    }

}


運(yùn)行結(jié)果為:

1578465237737_string類(lèi)的常用操作07.jpg

 

上面案例中。調(diào)用了String類(lèi)中重載的兩個(gè)substring()方法。在第5行代碼調(diào)用substring()方法時(shí),傳入?yún)?shù)4,即截取字符串中第5個(gè)字符以及之后的所有字符,因?yàn)樽址械淖址?,索引是?開(kāi)始的。第6行代碼調(diào)用substring()方法時(shí)傳入兩個(gè)參數(shù)4和6,即截取第5個(gè)和第6個(gè)字符,因?yàn)樽址诮厝r(shí),只包括開(kāi)始索引,不包括結(jié)束索引。上面案例中的第9~18行演示了split()方法的用法,該方法會(huì)根據(jù)指定的符號(hào)將字符串分割成三部分,并存放到一個(gè)String類(lèi)型的數(shù)組當(dāng)中。

 

String宇符串在獲取某個(gè)字符時(shí),會(huì)用到字符的索引,當(dāng)訪問(wèn)字符串中的字符時(shí),如果字符的索引不存在,則會(huì)發(fā)生StringIndexOutOfBoundsException(字符串角標(biāo)越界異常),接下來(lái)通過(guò)一個(gè)案例來(lái)演示。

public class string07 {

    public static void main(String[] args) {

        String s="abcdedsba";

        System.out.println(s.charAt(9));

    }

}

運(yùn)行結(jié)果為:

 

1578465251438_string類(lèi)的常用操作08.jpg

通過(guò)運(yùn)行結(jié)果可以看出,訪問(wèn)字符串中的字符時(shí),不能超出字符的索引范圍,否則會(huì)出現(xiàn)異常,這與數(shù)組中的角標(biāo)越界異常非常相似。

猜你喜歡:
java培訓(xùn)課程
java基礎(chǔ)教程下載

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!