首頁  >  文章  >  Java  >  Java字串進階

Java字串進階

巴扎黑
巴扎黑原創
2017-06-26 11:29:461233瀏覽

Java字串進階

前言

最常用的對字串運算的類別有三個,分別是String,StringBuilder,StringBuffer,下面將會詳細的說說這三個類別......

String

String類別代表字串,這個是最基本的對字串的類,這個也是使用比較多的類,這裡就不再詳細介紹了

建構

  • new String(String str)

  • new String(StringBuilder str)

  • #new String(StringBuffer str)

  • #new String(byte[] bys,String charsetName) 透過使用指定的字元集解碼指定的byte 子數組,建構一個新的String。

常用方法

  • #str charAt(int index) 傳回指定索引處的字符

  • String concat(String str) 將指定字串str連接到此字串的結尾,傳回連接成功後的字符,因此需要接受才能有效果

  • boolean contains(CharSequence s) 判斷此字串是否包含指定的char值序列,這裡的CharSequence是一個接口,可以直接使用它的子類作為參數(String,StringBuffer,StringBuild)

  • static String copyValueOf(char[] c) 將字元陣列變成字串並且傳回

  • static String copyValueOf(char[] c,int off,int count) 將截取的字元陣列變成字串並且傳回,off是開始截取的下標,count是截取的個數

  • boolean endWith(String s) 判斷字串是否以s結尾

  • # #boolean equals(Object o) 用於比較

  • int indexOf(char c) 傳回字元c在字串中第一次出現的索引

  • int indexOf(char c,int fromIndex) 從指定索引處開始搜索,尋找第一次出現的索引

  • int indexOf(String str)

    傳回指定子字串在此字串中第一次出現處的索引。

  • int indexOf(String str,int fromIndex)

    傳回指定子字串在此字串中第一次出現處的索引,從指定的索引開始。

  • boolean isEmpty()

  • int length()

  • #boolean matches(String regex) 是否符合正規表示式

  • trim() 傳回字串的副本,忽略前導空白和尾部空白。

  • String substring(int beginIndex) 傳回一個新的字串,它是此字串的子字串。

  • String substring(int beginIndex, int endIndex) 傳回一個新字串,它是此字串的子字串。

  • String toUpperCase() 使用預設語言環境的規則將此 String 中的所有字元轉換為大寫。

  • String[] split(String regex) 根據給定正規表示式的符合拆分此字串。 String[] split(String regex, int limit) 根據符合給定的正規表示式來拆分此字串。

char[] toCharArray()

將此字串轉換為一個新的字元陣列。

  • byte[] getBytes(Charset charset)

    使用給定的
  • charset
將此
String
編碼到
byte

序列,並將結果儲存到新的byte 陣列

#注意

上面的new String(byte[] bys,String charsetName)這個建構方法很重要,它可以改變字串的編碼集(和byte[] getBytes(Charset charset))配合使用,下面我們來看一個例子,程式碼如下:
######
/*         * InputStreamReader实现了将字节流FileInputStream转换为字符流,然后使用转换来的字节流创建高效流,从而实现高效的读写         *//*         * 编码集(我的eclipse编辑器默认的是utf-8         * 下面将中文字符串的编码集变为GBK写入a.txt文件,因为a.txt默认的是utf-8的因此这里在文件中显示的是乱码         * 然后我们读出来的还是GBK的,因为我们写入的是GBK编码集的,但是我的eclipse是utf-8的编码集,因此在控制台上输出的还是乱码         * new String(byte[] bys,String         * charsetName)使用这个构造方法将byte数组改变编码集并且转换为utf-8格式的,那么这次在控制台上输出的就不乱码了         */// 将GBK格式的中文写入a.txt文件File file = new File("src/a.txt");
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        String str = "中";byte[] by = str.getBytes("GBK"); // 将字符串改为GBK编码集fileOutputStream.write(by);
        fileOutputStream.close();        //从a.txt文件中读取中文FileInputStream fileInputStream = new FileInputStream(file);int len;byte[] bys = new byte[4];while ((len = fileInputStream.read(bys)) != -1) {
            System.out.println(new String(bys, "GBK"));
        }
        fileInputStream.close();
######StringBuffer##########線程安全的可變字元序列。一個類似 ###String### 的字串緩衝區,但不能修改。當然最重要的一點就是線程安全,我們可以從它的源碼可以看出,對於一些操作(###append###,###insert###..)都是使用了線程控制塊來實作同步,適合與多執行緒下的使用,原始碼如下:#########
    public synchronized StringBuffer append(Object obj) {super.append(String.valueOf(obj));return this;
    }public synchronized StringBuffer append(String str) {super.append(str);return this;
    }    public synchronized StringBuffer delete(int start, int end) {super.delete(start, end);return this;
    }/**     * @throws StringIndexOutOfBoundsException {@inheritDoc}     * @since      1.2     */public synchronized StringBuffer deleteCharAt(int index) {super.deleteCharAt(index);return this;
    }
###

建構

  • new StringBuffer(StringBuilder str)

  • new StringBuffer(String str)

常用的方法

  • #StringBuffer append(str)將指定類型的str追加到此字串的後面(String,char,char[],int,double,float,long,StringBuffer,StringBuilder)

  • StringBuffer insert(int offest,  str) 將指定類型的str插入到此序列中,offest表示開始插入的位置的索引,類型有String,char,char[],int,double,float, long,StringBuffer,StringBuilder

  • String delete(int fromIndex,int endIndex) 移除此序列中的字串並且傳回新的緩衝字串

  • StringBuffer reverse() 反轉字串

  • String substring(int start) 傳回一個新的String,它包含此字元序列目前所包含的字元子序列。

  • String substring(int start, int end) 傳回一個新的 String,它包含此序列目前所包含的字元子序列。

  • StringBuffer deleteCharAt(int index) 移除此序列指定位置的 char。

  • int length() 長度

  • #String toString() 傳回此序列中數據的字串表示形式。

StringBuilder

建議優先採用該類,因為在大多數實作中,它比 StringBuffer 要快。但是這個類別不是線程安全的,只適合單線程,如果使用多線程推薦使用StringBuffer,當然使用這個也行,不過需要自己實現同步

建構方法

  • new StringBuilder(String str)

常用方法

這個類別的常用方法和StringBuffer的一樣,這裡就不再一一列舉了,參考上面的即可使用

#

以上是Java字串進階的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn