sooxin-JAVA

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          JAVA字符串處理。

          第一節(jié)、String對(duì)象                    

          一、

                 Java中將字符串作為String類型對(duì)象來處理。當(dāng)創(chuàng)建一個(gè)String對(duì)象時(shí),被創(chuàng)建的字符串是不能被改變的。每次需要改變字符串時(shí)都要?jiǎng)?chuàng)建一個(gè)新的String對(duì)象來保存新的內(nèi)容。原始的字符串不變。之所以采用這種方法是因?yàn)閷?shí)現(xiàn)固定的,不可變的字符串比實(shí)現(xiàn)可變的字符串更高效。對(duì)于那些想得到改變的字符串的情況,有一個(gè)叫做StringBufferString類的友類,它的對(duì)象包含了在創(chuàng)建之后可以改變的字符串。

                 String類和StringBuffer類都在java.lang中定義。因此它們可以自動(dòng)的被所有程序使用。兩者均被說明為final,這意味著兩者均不含子類。

           

          二、String構(gòu)造函數(shù)

                 1String() 默認(rèn)構(gòu)造函數(shù),無參數(shù)

                 String s1 = new String();      

                 2String( char chars[]) ,傳入字符數(shù)組

                        char[] myChars={'a', 'b', 'c'};

                        String s2 = new String(myChars) // 使用字符串“abc”初始化s2

                 3String( char chars[], int startIndex, int numChars) ,傳入一個(gè)字符數(shù)組,從指定下標(biāo)位置開始獲取指定個(gè)數(shù)的字符,用這些字符來初始化字符串變量。

                        char[] myChars={'h', 'e', 'l', 'l', 'o'};

                        String s3 = new String(myChars,1,3); //使用字符串“ell”初始化s3

                 4String(String strObj),傳入另一個(gè)字符串對(duì)象,用該字符串對(duì)象的內(nèi)容初始化

                        String s4= new String(s3); // 這是s4也是“ell”了。

                 5String(byte asciiChars[])

                         String(byte asciiChars[], int startIndex, int numChars)

                        盡管Javachar類型使用16位(bit)表示Unicode編碼字符集,在Internet中,

          字符串的典型格式使用由ASCII字符集構(gòu)成的8位數(shù)組,因?yàn)?/span>8ASCII字符串是共同的,當(dāng)給定一個(gè)字節(jié)(byte)數(shù)組時(shí),String類提供了上面兩個(gè)初始化字符串的構(gòu)造函數(shù)。

          例子:

          package Examples;

          class SubStringConv{

                 public static void main(String[] args){

                        byte ascii[]={65,66,67,68,69,70};

                        String s1=new String(ascii);

                        System.out.println(s1);

                        String s2=new String(ascii,2,3);

                        System.out.println(s2);

                 }

          }

          編譯和運(yùn)行后輸出:

          ABCDEF

          CDE

           

          三、

                 1)調(diào)用字符串的length()方法可以得到該字符串的長(zhǎng)度(字符個(gè)數(shù));

                

                 2)前面說明了如何使用new運(yùn)算符創(chuàng)建一個(gè)字符串實(shí)例。然而這是一種早期的使用字符串常量的處理方法。對(duì)于程序中的每一個(gè)字符串常量,Java會(huì)自動(dòng)創(chuàng)建String對(duì)象。因此,可以使用字符串常量初始化String對(duì)象。例如:

                 String s5="abc";

                 int i = "abc".length(); //可以將字符串作為對(duì)象來進(jìn)行操作

                 3)可以使用“+”運(yùn)算符來將兩個(gè)字符串連接起來產(chǎn)生一個(gè)新的String對(duì)象。只要+運(yùn)算符有一個(gè)運(yùn)算數(shù)是字符串(String)實(shí)例時(shí),編譯器就將另一個(gè)運(yùn)算數(shù)轉(zhuǎn)換為它的字符串形式。這種操作是通過調(diào)用一個(gè)由String類定義的 字符串轉(zhuǎn)換方法valueOf()來完成的。對(duì)于簡(jiǎn)單類型,valueOf()方法返回一個(gè)字符串,該字符串包含了該類型的值的字符串。對(duì)于對(duì)象,valueOf()方法調(diào)用toString()方法。每一個(gè)類都執(zhí)行toString()方法,因?yàn)樗怯?/span>Object定義的。toString()方法具有如下一般形式: String toString()   toString()方法返回一個(gè)String對(duì)象(即字符串)。該對(duì)象一般是對(duì)類的一個(gè)描述。

           

          四、一些字符串操作

                 1)字符截取

                        *char  charAt(int where) ,注意,這里返回一個(gè)char字符例如:

                        char a ;

                        a="abcde".charAt(2); //將索引為2 ,即第三個(gè)字符賦給a

           

                       * void getChars(int sourceStart, int sourceEnd, char target[], int targetStart) ,這里是無返回值方法,指定要截取的子字符串的開始和結(jié)束下標(biāo),再指定要儲(chǔ)存子字符串內(nèi)字符的數(shù)組,和存放這些字符的起始位置。注意,子字符串并不包括位于結(jié)束下標(biāo)的字符。

                    

                    * byte[] getBytes()    這是getBytes()方法最簡(jiǎn)單的形式,它實(shí)現(xiàn)將字符存放于字節(jié)數(shù)組中。在將字符串(String)值輸出到一個(gè)不支持16Unicode編碼的環(huán)境時(shí),getBytes

          ()是最有用的。例如,大多數(shù)Internet協(xié)議和文本文件格式在文本交換時(shí)使用8ASCII編碼。

           

           * char[] toCharArray() 將字符串中所有的字符轉(zhuǎn)換到一個(gè)字符數(shù)組的最簡(jiǎn)當(dāng)方法,也可以使用getChars()方法實(shí)現(xiàn)。

           

          2)字符串比較

              * boolean equals(Object str) 比較兩個(gè)字符串對(duì)象是否相等,

             boolean equalsIgnoreCaseJ(String str) 比較兩個(gè)字符串對(duì)象,且忽略字符的大小寫

           

           * regionMatches() 方法允許將一個(gè)字符串中指定的區(qū)間和另一字符串中指定的區(qū)間進(jìn)行比較,它的重載形式允許在比較時(shí)忽略大小寫。下面給出這兩種方法的一般形式:

             boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)

          boolean regionMatches(boolean ignoreCase ,int startIndex,String str2,int str2StartIndex,int numChars)

               其中startIndex指定調(diào)用此方法的字符串內(nèi)子字符串的起始位置。

          * boolean startsWith(String str)    startsWith方法還有第二種形式:

           boolean startWith(String str, int startIndex)

             boolean endsWith(String str)

               上面的方法用來判斷一個(gè)給定的字符串是否是從指定的字符串開始或結(jié)束。

          * int compareTo(String str) 方法用于比較兩個(gè)字符串的大小。字符串比較的結(jié)果及其含義:

          含義

          小于0

          調(diào)用此方法的字符串小于參數(shù)str

          大于0

          調(diào)用此方法的字符串大于參數(shù)str

          等于0

          兩個(gè)字符串相等

           

          3)其他操作

          * 搜索字符串:

          int indexOf( int ch)

          int lastIndexOf( int ch)

          int indexOf(String str)

          int lastIndexOf(String str)

          指定搜索的起始點(diǎn):

          int indexOf( int ch, int startIndex)

          int lastIndexOf( int ch ,int startIndex)

          int indexOf(String str ,int startIndex)

          int lastIndexOf(String str, int startIndex)

           

          * 使用 substring()截取子字符串:

                 String substring(int startIndex)    注意substringstring沒有大寫,截取指定位置后的子字符串。

                 String substring(int startIndex,int endIndex) 截取指定起始位置和結(jié)束位置的子字符串。注意截取的字字符串不包括結(jié)束位置的字符。

           

          * concat() 連接連個(gè)字符串,與+ 運(yùn)算符執(zhí)行相同功能。

                 String concat(String str)

           

                        * replace() 用另一個(gè)字符取代指定字符串中指定字符:

          String replace(char original, char replacement)    例如:

                 String s=”Hello”.replace(‘l’,’w’); //執(zhí)行后 s =”Hewwo”;

           

                       * trim() 返回一個(gè)字符串,該字符串是刪除調(diào)用字符串前后的空白符所得的字符串

                

                        * 改變字符串內(nèi)字符的大小寫

                         String toLowerCase() 返回一個(gè)所有字母都是小寫的字符串

                         String toUpperCase()返回一個(gè)所有字母都是大寫的字符串

           

           

                 * 使用 valueOf()方法實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換

                        例如:

          String str = String.valueOf(3) ; //int類型轉(zhuǎn)換成字符串類型,其他基本數(shù)據(jù)類型和任何類的對(duì)象也可作為參數(shù)。

           

          第二節(jié)、StringBuffer

          StringBuffer定義了下面三個(gè)構(gòu)造函數(shù):

                 StringBuffer()                 // 默認(rèn)構(gòu)造函數(shù),預(yù)留了16個(gè)字符的空間,該空間不需再分配

                 StringBuffer(int size)  // 設(shè)置指定緩沖區(qū)大小

          StringBuffer(String str) // 設(shè)置StringBuffer對(duì)象初始化的內(nèi)容并預(yù)留16個(gè)字符空間,且不需再分配空間

          * int length()

                 調(diào)用length()方法可以得到StringBuffer對(duì)象的長(zhǎng)度,調(diào)用capacity()可以得到總的分配容量。兩個(gè)方法都是返回一個(gè)int類型的值。

                 * void ensureCapacity(int capacity)

          如果想在構(gòu)造StringBuffer對(duì)象后為某些字符預(yù)分配空間,可以使用ensureCapacity()方法,設(shè)置緩沖區(qū)的大小,這在事先已知要在StringBuffer上追加大量小字符串的情況下是有用的。ensureCapcity()方法具有如下的一般形式: void ensureCapacity(int capacity)

          * void setLength(int len)

          使用setLength()方法可以設(shè)置StringBuffer對(duì)象的長(zhǎng)度,它的一般形式如下:

          void setLength(int len)    如果len大于StringBuffer對(duì)象當(dāng)前的length()值的話,那么會(huì)在StringBuffer對(duì)象后面加上空字符;如果比length()小的話,則len后面的字符串會(huì)丟失。

                 * char charAt(int where)

                  void setCharAt(int where, char ch)

             使用charAt()方法可以得到StringBuffer對(duì)象中指定位置上的字符,setCharAt()       可以設(shè)置指定位置上的字符。它們的一般形式如下:

                 char charAt(int where)

                 void setCharAt(int where,char ch)       

          對(duì)于這兩種法法,where值必須是非負(fù)的,同時(shí)不能超過或等于StringBuffer對(duì)象的長(zhǎng)度。

          * getChars(int suorceStart,int sourceEnd,char target[] , int targetStart)

          * append()

           Append()方法將任一其他類型數(shù)據(jù)的字符串形式連接到調(diào)用StringBuffer對(duì)象的后面,對(duì)所有內(nèi)置的類型和Object,它都有重載形式。下面是幾種形式:

          StringBuffer append(String str)

          StringBuffer append(int num)

          StringBuffer append(Object obj)

           

          * insert()

           Insert()方法將一個(gè)字符串插入另一個(gè)字符串中。下面是它的幾種形式:

           StringBuffer insert(int index,String str)

           StringBuffer insert(int index,char ch)

           StringBuffer insert(int index,Object obj)

           

                 *reverse()             // StringBuffer reverse()

                  StringBuffer strbf=new StringBuffer(“ABCDEFG”);

                  strbf.reverse(); 

                  System.out.println(strbf); //輸出 GFEDCBA

                

             * StringBuffer delete(int startIndex,int endIndex)

                  StringBuffer deleteCharAt(int loc)

                 刪除指定位置的字符串和指定位置的字符。例如刪除第一個(gè)字符后的所有字符:

                  strbf.delete(1,strbf.length());

           

                 * replace()   

                  它完成在StringBuffer內(nèi)部用一個(gè)字符串代替另一個(gè)指定起始位置和結(jié)束位置的字符串的功能,注意的是,被代替的字符不包括結(jié)束位置上的字符,它的一般形式是,:

                  StringBuffer replace(int startIndex, int endIndex,String str)

           

                * substring() 返回StringBuffer的一部分值

                  String substring(int startIndex)

                  String substring(int startIndex, int endIndex)

          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=610794

          posted on 2007-04-26 16:18 sooxin 閱讀(535) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 于都县| 保德县| 寿阳县| 华安县| 修文县| 义马市| 万山特区| 日喀则市| 平远县| 阜新| 安仁县| 达尔| 迁西县| 云霄县| 霍邱县| 栖霞市| 汉阴县| 申扎县| 利辛县| 永吉县| 陈巴尔虎旗| 息烽县| 雷州市| 奉节县| 郑州市| 梅河口市| 锦屏县| 湘阴县| 清原| 孟津县| 八宿县| 芮城县| 信丰县| 白银市| 乐陵市| 凤冈县| 蓝田县| 葵青区| 巨鹿县| 林口县| 湘阴县|