首頁  >  文章  >  Java  >  Java之進一步了解字串類

Java之進一步了解字串類

怪我咯
怪我咯原創
2017-06-30 10:52:291278瀏覽

下面小編就為大家帶來一篇老生常談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