Java筆記八.常用APIの字串,javaapiの字串
字串處理類與介面轉載請表明出處:http://blog.csdn.net/u012637501(嵌入式_小J的天空)
一.String類和StringBuffer類1.字串類 Java定義String和StringBuffer兩個類來封裝對字串的各種操作,他們都被放到java.lang包中。(1)String類:String類對象的內容一旦被初始化就不能再改變,String類用於比較兩個字串、尋找和抽取串中的字元或子串;字串與其他類型之間的相互轉換等。字元間的串聯,則需使 用StringBuffer或者StringBuilder或"+"方法。(2)StringBuffer類:StringBuffer類用於改變對象的內容(字串),可以將其他各種類型的資料增加、插入到字串,也可以翻轉字串中原來的字元。該類在多線程中使用是安全的,可同步。另外,一旦通過StringBuffer產生最終想要的字串,可以使用StringBuffer.toString()方法將其轉換成String類,然後就可以使用String類的各種方法操作這個字串了。(3)StringBuilder類:StringBuffer類用於改變對象的內容(字串),可以將其他各種類型的資料增加、插入到字串,也可以翻轉字串中原來的字元,與StringBuffer類擁有同樣的方法(最主要的方法也為append和insert方法)。該類只能在單線程使用,不能進行內容同步,但其速度要比StringBuffer要快。(4)CharSequence介面:CharSequence只是一個可讀的字元序列值。這個介面提供統一的,唯讀訪問許多不同種類的字元序列。CharSequence介面不能執行個體化出來一個對象。2.構造方法與成員函數
String類:
(1)構造方法:a.String() :建立一個字串對象,對象的內容為空白字元序列;b.String(byte[] bytes) :建立一個字串對象,對象的內容為byte[] bytes字串序列;c.String(String original):建立一個字串對象,對象的內容拷貝original對象的內容;d.String(StringBuffer buffer) :建立一個字串對象,對象的內容為buffer對象包含的內容;e.String(StringBuilder builder) :建立一個字串對象,對象的內容為builder對象包含的內容;(2)常用成員方法a.int compareTo(String anotherString):比較兩個字串,其中參數為一個字串對象;b.String concat(String str):將str對象的字串,添加到該字串末尾;c.boolean contains(CharSequence s):判定字串是否包含字串序列sd.boolean equalsIgnoreCase(String anotherString):判定一個字串對象和另外一個字元穿對象是否相等,忽略大小寫;e.boolean equals(Object anObject):判定兩個字串對象的內容是否相等;f.int indexOf(int ch):返回字串中第一次出現'ch'字元的標號g.indexOf(int ch, int fromIndex):返回字串中從fromIndex位置開始第一次出現'ch'字元的標號h.boolean isEmpty():判定字串對象是否為空白i.static String join(CharSequence delimiter, CharSequence... elements):連結一串字元k.int length():獲得字串長度l.String replace(char oldChar, char newChar):替換原有字串中一個字元產生一個新的字串對象 String replace(CharSequence target, CharSequence replacement) 而不是改變原理的字串內容 replaceAll(String regex, String replacement)m.String substring(int beginIndex, int endIndex):截取一段子字串(從deginIndex位置到endIndex位置)n.char[] toCharArray():將字串轉換為字元數組,並儲存到char型數組中o.String toString():將其他對象轉換成String對象字串p.static String valueOf(。。。):將其他類型的字元/參數/轉換為字串對象
StringBuffer類
(1)構造方法:a.StringBuffer() :建立一個StringBuffer對象,初始化一個16字元空間且儲存內容為空白;b.StringBuffer(CharSequence seq) :建立一個StringBuffer對象,對象初始內容為seq;c.StringBuffer(int capacity) :建立一個StringBuffer對象,指定空間大小為capacity;d.StringBuffer(String str) :建立一個StringBuffer對象,初始化內容為str對象指定的字串;(2)常用成員方法a.StringBuffer append(char c/char[] str /CharSequence s/...):添加相應內容到該字串序列末尾處;b.StringBuffer delete(int start, int end):刪除字串序列start到end位置段字串序列;c.StringBuffer insert(int offset, char[] str/ CharSequence s/...):向字串序列offset位置插入一個字元/字串/...d.int length():返回StringBuffer對象所指定字串序列字元個數;e.StringBuffer replace(int start, int end, String str):替換指定字串序列f.String substring(int start, int end) :截取子字串序列g.String toString():將StringBuaffer對象轉換為String類型對象;
StringBuilder類public final class StringBuilderextends Objectimplements Serializable, CharSequence構造方法:StringBuilder():建立一個內容為空白的大小為16字元的StringBuilder對象StringBuilder(CharSequence seq) :建立一個StringBuilder對象,對象的內容為seq字串序列StringBuilder(int capacity) :建立一個String Builder對象,Object Storage Service空間為caoacityStringBuilder(String str):建立一個StringBuilder對象,對象的內容為str對象代表的字串
二、應用技巧歸納(1) String str = "abc";是一個匿名String對象,對象名為str. 相當於: char data[] = {'a', 'b', 'c'}; String str = new String(data);(2)串連操作符(+):將其他各種類型的資料轉換成字串,並前後串連成新的字串舉例:String x="a"+4+"c";等價於String x=new StringBuffer().append("a").append(4).append("c").toString();(3)String str=new StringBuffer().toString();將StringBuffer對象轉換成String類對象字串(4)byte[] buf=new byte[1024]; String str=new String(buf,0,pos); 將位元組數群組轉換成String類對象字串(5)Xxx封裝類.parseXxx:將字串轉換成基礎資料型別 (Elementary Data Type)(6)Xxx封裝類對象.xxxValue:將封裝類轉換成基礎資料型別 (Elementary Data Type)(7)String s1="hello";String s2="hello";上面的兩個等號"="說明s1與s2是同一個對象 String s1=new String("hello");String s2=new String("hello");儘管內容相同,但確實兩個不同的對象
三、執行個體源碼
import java.io.IOException;/*學會使用String類:程式一行一行地讀取從鍵盤上不停輸入的字串 * 並列印顯示,知道輸入一行"bye"為止*/public class ReadLine { public static void main(String [] args) { byte buf[]=new byte[1024]; //此時的byte為基礎資料型別 (Elementary Data Type) String finalInput=null; int pos=0; int ch=0; System.out.println("請輸入資料:"); while(true) { //1.從鍵盤讀取一個位元組 try{ ch=System.in.read(); //返回從鍵盤讀取一個位元組,可能會拋出IOException異常 } catch(IOException e) { e.printStackTrace(); } //2.處理從鍵盤讀取的資料 switch(ch) { case '\r': break; case '\n': //斷行符號鍵:將buf緩衝空間0~pos區間的資料轉化為字串並判定 finalInput=new String(buf,0,pos); if(finalInput.equalsIgnoreCase("bye")) { return;//退出程式 } else { System.out.println(finalInput); pos=0; break; } default: //如果沒有按斷行符號鍵則繼續將輸入的字元放在buf空間 buf[pos++]=(byte)ch; break; } } }}
參考:http://docs.oracle.com/javase/8/docs/api/index.html