激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 老生常談Java字符串進階(必看篇)

老生常談Java字符串進階(必看篇)

2020-11-19 10:29腳本之家 Java教程

下面小編就為大家帶來一篇老生常談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))配合著使用,下面我們來看一個例子,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * 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..)都是使用了線程控制塊來實現同步,適合與多線程下的使用,源代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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字符串進階(必看篇)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级成人一区二区三区 | 色人久久| 久久久久久久久久91 | 久久资源总站 | 成人 在线 | 美女黄色影院 | 亚洲最新无码中文字幕久久 | 永久在线观看电影 | 日韩a毛片免费观看 | 国产一区二区视频精品 | 久久精品人人做人人爽 | 久国久产久精永久网页 | 毛片视频网站 | 久草在线小说 | 久久成人国产精品 | 欧美xxxwww| 久久成人精品视频 | 骚av在线 | 日韩视 | 在线观看中文字幕av | hd欧美free性xxxx护土 | 91色琪琪电影亚洲精品久久 | 国产精品999在线 | 成人免费网站在线观看视频 | 一本色道久久综合狠狠躁篇适合什么人看 | 欧美a∨一区二区三区久久黄 | 久久久久久久一区二区 | av在线免费播放 | 一级全毛片 | 亚洲射吧| 久久国产亚洲视频 | 天天透天天狠天天爱综合97 | 亚洲精品久久久久久 | 国产精品成人一区 | 在线播放黄色网址 | 国产午夜亚洲精品 | 污版视频在线观看 | 欧美电影在线观看 | 国产一国产一级毛片视频在线 | 久久综合伊人 | 免费黄色大片在线观看 |