String字元補充

2021-07-10 05:11:10 字數 1990 閱讀 7841

一、

string字串補充

對於string:獲取(length()、chatat()、indexof()-有三種、lastdexof())、判斷(contains、isempty、 startwith()、endwith()、equals()、 equalsignore())、替換(replace)、轉換(trim、touppercase、tolowercase、valueof()、tochararray)、子串(獲取一部分  substring)、切割(split())

1、int compareto(string anotherstring)

相等關係返回0;不相等時,從兩個字串第0個字元開始比較,返回第乙個不相等的字元差,另一種情況,較長字串的前面部分恰巧是較短的字串,返回它們的長度差。

eg:public

static

void main(string args) {

string s1 = new string("abcdefghijklmn");

string s2 = new string("abcdefghij");

string s3 = new string("abcdefghijalmn");

//返回 s2, 和s3的長度差

system.out.println("s1.compareto(s2):" + s1.compareto(s2));

//返回「k」和「a」的差

system.out.println("s1.compareto(s3):" + s1.compareto(s3));

2、indexof是第乙個與其匹配的字元、

lastdexof

是最後乙個與其匹配的字元,這裡就強調一下。總是混! 二、

string, stringbuffer, stringbuilder

1. string 類 

string的值是不可變的,這就導致每次對string的操作都會生成新的string物件,不僅效率低下,而且大量浪費有限的記憶體空間。 

string a = "a"; //假設a指向位址0x0001 

a = "b";//重新賦值後a指向位址0x0002,但0x0001位址中儲存的"a"依舊存在,但已經不再是a所指向的,a 已經指向了其它位址。 

因此string的操作都是改變賦值位址而不是改變值操作。 

2. stringbuffer是可變類,和執行緒安全的字串操作類,任何對它指向的字串的操作都不會產生新的物件。 每個stringbuffer物件都有一定的緩衝區容量,當字串大小沒有超過容量時,不會分配新的容量,當字串大小超過容量時,會自動增加容量。 

stringbuffer buf=new stringbuffer(); //分配長16位元組的字元緩衝區 

stringbuffer buf=new stringbuffer(512); //分配長512位元組的字元緩衝區 

stringbuffer buf=new stringbuffer("this is a test")//在緩衝區中存放了字串,並在後面預留了16位元組的空緩衝區。 

3.stringbuffer 

stringbuffer和stringbuilder類功能基本相似,主要區別在於stringbuffer類的方法是多執行緒、安全的,而stringbuilder不是執行緒安全的,相比而言,stringbuilder類會略微快一點。對於經常要改變值的字串應該使用stringbuffer和stringbuilder類。 

4.執行緒安全 

stringbuffer 執行緒安全 

stringbuilder 執行緒不安全 

5.速度 

一般情況下,速度從快到慢:stringbuilder>stringbuffer>string,這種比較是相對的,不是絕對的。 

6.總結 

(1).如果要操作少量的資料用 = string 

(2).單執行緒操作字串緩衝區 下操作大量資料 = stringbuilder 

(3).多執行緒操作字串緩衝區 下操作大量資料 = stringbuffer 

字元char 補充

char ch1 a char ch2 65 可直接編碼賦值 ch2 字元型可以參與算術運算 本質上是將字元看成對應asscii碼數字參與運算 ch2 2 ch2 a ch2 1 關係運算子 表達範圍 3 int num 57 3 浮點數 判定補充 是否相同 做差 看差的絕對值 float x fl...

補充 字元編碼

unicode中文和英文都是佔兩個位元組 ascii只能存英文本母和特殊字元,佔乙個位元組 所以,用unicode存英文本元就會比ascii多一倍的儲存,因此就出現了乙個unicode擴充套件集utf 8,所有的英文本元 按ascii儲存,佔乙個位元組,而中文變成3個位元組 例子 將utf 8的編碼...

String 字元處理

查詢字串 indexof indexof start,end 接收兩個引數,返回某個指定的子字串在字串中地一次出現的位置,如果沒有就返回 1,它預設是從下標0開始查咋的。let str hello world let str1 str.indexof o let str2 str.indexof w...