黑馬程式設計師 String類

2021-06-19 22:03:34 字數 4413 閱讀 1730

一、string的一些特點

字串是乙個特殊的物件,字串一旦初始化就不可以改變.在這裡舉兩個例子就可以充分理解並說明字串的概念.

string str1 = "abc";   

string str2 = new string("abc");

在這兩個表示式中str1==str2   結果返回的是:false.    str1.equals(str2)  結果返回的是 true;這是什麼原因呢?

首先在分析這兩個原因就先說一下str1和str2分別代表的是什麼,也就是他們出現這樣結果的原因.

str1和str2都代表的是了這個類的型別變數,在str1中的"abc"字串是乙個物件,而且在常量池中建立的乙個物件,可以被共享。str2在記憶體中建立了有兩個物件,也就是在堆中建立兩個物件.str1可以被共享的,而str2屬於new這個物件而進行引數傳遞.

所以,str1和str2分別代表兩個物件,他們記憶體的位址是不一樣的,str1==str2   結果返回的是:false,我想疑問的是equals也是比較位址的為什麼它會返回true呢??原因是:在string中複寫了object類中equals方法,該方法用於判斷字串是否相同.

二、string類中的方法

string類適於描述字串事物,那麼它就提供了多個方法對字串進行操作。它的方法應該要全部掌握。下面例舉一些。

1.獲取

1.1 字串所包含的的子字元數,也就是字串的長度。

int length(); //獲取字串的長度

1.2 根據索引獲取該索引位置的某個字元

char charat(int index);//根據索引獲取字元

1.3 根據字元獲取該字元在字串的索引位置

int indexof(int ch); //返回ch字元在字串第一次出現的位置

int indexof(int ch,int fromindex); //根據fromindex指定索引位置開始獲取ch字元在字串第一次出現的位置

int lastindexof(int ch); //從後向前索引ch字元第一次出現的位置

int lastindexof(int ch,,int fromindex); //根據fromindex指定索引位置開始從後向前索引ch字元出現的位置

1.4 根據字串獲取該字元在字串的索引位置

int indexof(string str); //返回str字串第一次出現的位置

int indexof(string str,int fromindex); //根據fromindex指定索引位置開始獲取str字元在字串第一次出現的位置

int lastindexof(string str); //從後向前索引str字串第一次出現的位置

int lastindexof(string str,int fromindex); //根據fromindex指定索引位置開始從後向前索引str字串出現的位置

1.5 根據索引位置獲取字串中的一部分

string substring(begin);

string substring(begin,and);//包含頭不包含尾

2.判斷

2.1 字串中是否包含某乙個子串

boolean contains(string str);

int indexof(string str); //返回-1表示該字元不存在

2.2 字串中是否有內容(字串在此時不能為null,否則報錯)

boolean isempty(); 出現,原理就是判斷字串長度是否為0;

2.3.字串是否是以指定內容開頭

boolean startswith(string str);

2.4 字串是否是以指定內容結尾

boolean endswith(string str);

2.5 判斷字串內容是否相同

boolean equals(object obj); //覆蓋類object中的equals方法

2.6 判斷內容是否相同,並忽略大小寫

boolean equalsignorecase(); //忽略大小寫,驗證碼就是這個功能

3.轉換

3.1 將字元陣列轉成字串

構造方法: sting(char );

string(char ,offset,count);//將字元陣列中從offset初始索引位置開始,共count(個數)長度的字元轉成字串

靜態方法: static string copyvalueof(char);

static string copyvalueof(char data,int offset,int count);

static string valueof(char);//這個方法只有是基本資料型別都可以轉成字串

3.2 將字串轉成字元陣列

char tochararray();

3.3 將字串轉成字串陣列(切割)

string split(string regex);//涉及到正規表示式

3.4 將位元組陣列轉成字串

構造方法:string(byte);

string(byte,offset,count);//將位元組陣列中從offset初始索引位置開始,共count(個數)長度的字元轉成字串

3.5 將字串轉成位元組陣列

byte getbytes();

3.6 將基本資料型別轉成字串

靜態方法: static stirng valueof(int)

static stirng valueof(double)

.....只要是基本資料型別都可以.

3.7 將字串轉成大寫或小寫

string touppercase(); //轉換成大寫

string tolowercase(); //轉換成小寫

特殊:字串和自己陣列在轉換過程中,是可以指定編碼表的.

4 替換

string replace(oldchar,newchar);//如果要替換的字元或字串不存在,返回原字串

5 去除兩端空格,比較

string trim(); //將字串兩端的空格去除

int compareto(string str);//按字典順序比較,只要有不相同的字元就返回值.該比較基於字串中各個字元的 unicode 值.

如果引數字串等於此字串,則返回值0

如果此字串按字典順序小於字串引數,則返回乙個小於0的值;

如果此字串按字典順序大於字串引數,則返回乙個大於0的值。

三、stringbuffer(字串緩衝區物件)

子符串的組成原理就是通過該類實現的。stringbuffer可以對字串內容進行增刪改查。stringbuffer是乙個容器,用於儲存資料的容器。大部分方法與string相同。

特點:1.stringbuffer是可變長度;2.可以儲存不同型別的資料;3.最終會通過tostring方法變成字串;4.可以對字串進行修改。5.建立stringbuffer物件,初始容量為16個字元。

具備功能:

1.新增:

stringbuffer insert(index,data);

2.刪除

stringbuffer delete(start,end);//包含頭,不包含尾

stringbuffer deletecharat(int index);//刪除指定元素

delete(0,length);//清空  void setlength();   new stringbuffer();

3.查詢

char charat(index);

int indexof(string);

int lastindexof(string);

4.修改

stringbuffer replace(start,end,string);

void setcharat(index,char);

四、stringbuilder

stringbuffer與stringbuilder功能一模一樣。不同的是:stringbuffer執行緒是同步的(jdk1.0)通常用於多執行緒

stringbuilder:執行緒不同步的(jdk1.5)通常用於單執行緒,他的出現提高效率。為了提高效率,在單執行緒就不在判斷鎖。

jdk公升級:1.為了簡化書寫;2.提高效率;3.增加安全性;

什麼時候用stringbuffer或stringbuileder?如果認為儲存的資料要用字串的形勢來使用(有容器盡量使用容器);與陣列不同的就是陣列乙個乙個取出來。stringbufer一下全取出來。

黑馬程式設計師 string

asp.net unity開發 net培訓 期待與您交流!1.string是乙個類,可以看成是char的唯讀陣列,string類中的值不可改變,改變字串的值,需要用 tochararray 方法 class program 2.string類有兩個方法,tolower touper 忽略大小寫,還有...

String類總結02 黑馬程式設計師

asp.net android ios開發 期待與您交流 02 字串緩衝區 其他常用物件 1.stringbuffer字串緩衝區 方法的呼叫鏈 insert 指定位置插入資料 setcharat int index char ch 修改指定位置上的字元 reverse 反轉緩衝區內的字元 delet...

黑馬程式設計師 String練習

1,給定乙個字串陣列。按照字典順序進行從小到大的排序。1,給定乙個字串陣列。按照字典順序進行從小到大的排序。思路 1,對陣列排序。可以用選擇,冒泡都行。2,for巢狀和比較以及換位。3,問題 以前排的是整數,比較用的比較運算子,可是現在是字串物件。字串物件怎麼比較呢?爽了,物件中提供了用於字串物件比...