java之String
一、String類(lèi)的特性
String對(duì)象是不可變的,字符串一旦創(chuàng)建,就不可以改變。
二、構(gòu)造字符串
? ? ? 字符串直接量
String a=new String("字符串直接量");?
? ? ? 字符數(shù)組
String b=new String(chars);
? ? ? 字符串直接量賦值,java把字符串直接量看作String對(duì)象
String c="字符串直接量";
? ? ?注意:String變量存儲(chǔ)的是String對(duì)象的引用
三、不可變字符串與限定字符串
String對(duì)象是不可變的。
a的String對(duì)象保存在堆內(nèi)存中,具有唯一的內(nèi)存空間
c的String對(duì)象為限定字符串保存在JVM字符串駐留池中,多個(gè)相同的String對(duì)象共用一個(gè)內(nèi)存空間
例如:
a=="字符串直接量";? // fase
c=="字符串直接量"; ?//true
獲得字符串的限定字符串的引用使用intern方法
String d=a.intern();
d==c; ? ? //true
四、字符串替換和分隔
repalce(char old,char new) ? ? ? ? ? ? ? ? ? ? String
repalceFirst(String old,String new) ? ? ? ?Strring ?
repalceAll(String old,String new) ? ? ? ? ? String
split(String delimiter) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? String[] ? ? ? ? ? ? //分割字符串
split(String delimiter,int limit) ? ? ? ? ? ? ? ? ?String[] ??
? ? ? ? ? ?
limit 參數(shù)控制模式應(yīng)用的次數(shù),因此影響所得數(shù)組的長(zhǎng)度。
n > 0,則模式將被最多應(yīng)用 n - 1 次,數(shù)組的長(zhǎng)度將不會(huì)大于 n,而且數(shù)組的最后一項(xiàng)將包含所有超出最后匹配的定界符。
n <0,那么模式將被應(yīng)用盡可能多的次數(shù),而且數(shù)組可以是任何長(zhǎng)度。
n = 0,那么模式將被應(yīng)用盡可能多的次數(shù),數(shù)組可以是任何長(zhǎng)度,并且結(jié)尾空字符串將被丟棄。
例如,字符串 "boo:and:foo" 使用這些參數(shù)可生成以下結(jié)果:
RegexLimit結(jié)果
? ?:? ? ? ? ??2? ? ? ??{ "boo", "and:foo" }
? ?:? ? ? ? ? 5? ? ? ??{ "boo", "and", "foo" }
? ?:? ? ? ? ?-2? ? ? ??{ "boo", "and", "foo" }
? o? ? ? ? ??5? ? ? ??{ "b", "", ":and:f", "", "" }
? o? ? ? ? ?-2? ? ? ??{ "b", "", ":and:f", "", "" }
? o? ? ? ? ??0? ? ? ??{ "b", "", ":and:f" }
Limit為-2,{ "b", "", ":and:f", "", "" } 第一個(gè)“”是因?yàn)閮蓚€(gè)o之間的空數(shù)據(jù),第二個(gè)也是這個(gè)原因,最后一個(gè)是將"boo:and:foo"中最后空字符串也算進(jìn)去的。
五、模式匹配、替換和分割
matchs(String regex) ? ?與equals方法非常相似,判斷子串是否匹配。
"javac".match("javac");
"javac".equals("javac");
結(jié)果都為true。
matchs更強(qiáng)大,可以匹配遵循一定規(guī)律的字符串。
比如:"javac myclass".match("javac.*"); ? ? ? ? ? ? ? ? ?//子串.*的意思是字符串后面緊跟0個(gè)或多個(gè)任意字符
\\d表示單個(gè)數(shù)字字符,\\d{3}表示3個(gè)數(shù)字字符
方法repalceAll、repalceFirst、split可以和正則表達(dá)式結(jié)合一起使用。
詳細(xì)參考java之正則表達(dá)式
六、常用方法
?
length() ? ? ? ? ? ? ? ? ? ? ? ? ? 返回字符串長(zhǎng)度
charAt(index) ? ? ? ? ? ? ? ?返回指定位置的字符
concat() ? ? ? ? ? ? ? ? ? ? ? ? ?與+功能相同,都是連接字符串返回新的字符串,效率比+高一些
toUpperCae() ? ? ? ? ? ? ? ?返回轉(zhuǎn)成大寫(xiě)的字符串
toLowerCase() ? ? ? ? ? ? 返回轉(zhuǎn)成小寫(xiě)的字符串
trim() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回去除前后兩端空白字符的字符串
注意:""表示空字符串,并且"".length()為0? ? ? ?
equals(s1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 判斷是否相等
equalsIgnoreCase(s1) ? ? ? ? ? ? ? ? ? ?判斷是否相等不區(qū)分大小寫(xiě)
compareTo(s1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?比較大小,若大于返回大于0的整數(shù),若小于返回小于0的數(shù),等于返回0
compareToIgnoreCase(s1) ? ? ? ? ???比較大小,若大于返回大于0的整數(shù),若小于返回小于0的數(shù),等于返回0,不區(qū)分大小寫(xiě)
startsWith(prefix) ? ? ? ? ? ? ? ? ? ? ? ? ? ? 字符串以指定的前綴開(kāi)始,返回true
endsWith(suffix) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??字符串以指定的后綴結(jié)束,返回true
contains(s1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s1字符串是否該串的子串
?
? ? ? ? ??警告:字符串不能像c++一樣使用<,>,<=,>=來(lái)比較。
? ? ? ? ? 注意:equals方法返回是boolean類(lèi)型,compareTo方法返回int類(lèi)型
substring(beginIndex) ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回子串
substring(beginIndex,endIndex) ? ? ? ? ??返回子串
indexOf(ch/s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回第一個(gè)出現(xiàn)ch/s的下標(biāo) ? ? ? ch/s意思是char或者String類(lèi)型的變量
indexOf(ch/s,fromIndex) ? ? ? ? ? ? ? ? ? ? ? ?返回在fromIndex之后第一個(gè)出現(xiàn)ch/s的下標(biāo)
?
lastIndexOf(ch/s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回最后一個(gè)出現(xiàn)ch/s的下標(biāo)
LastIndexOf(ch/s,fromIndex) ? ? ? ? ? ? ? ??返回在fromIndex之前最后一個(gè)出現(xiàn)ch/s的下標(biāo)
以上返回下標(biāo)的函數(shù),如果沒(méi)有找到這返回-1。七、字符串與數(shù)值的轉(zhuǎn)換(數(shù)值型的封裝類(lèi)具有字符串轉(zhuǎn)數(shù)值的函數(shù))
Integer.parseInt(s)Double.parseDouble(s)?Byte.parseByte(s)Long.parseLong(s)八、數(shù)值或者字符轉(zhuǎn)字符串
1)String ?s=number+"";2)對(duì)應(yīng)的封裝類(lèi)的toString方法調(diào)用? ? ? ? ? 3)String.valueOf(value)方法
? ? ? ? ? ?
九、格式化字符串
? ? ? ? ?String.fomat(format,value0,...);
%d ? ? 布爾值
%c ? ?字符
%d ? ?十進(jìn)制整數(shù)
%x ? ?十六進(jìn)制整數(shù)
%f ? ?浮點(diǎn)數(shù)
%e ? 科學(xué)記數(shù)法形式的數(shù)
%s ? 字符串
?
? ? ? ? ?%5c ? ? ? ? ? ?輸出字符并在前面加四個(gè)空格
? ? ? ? ?%10.2f ? ? ? 輸出浮點(diǎn)數(shù)條目的寬度至少為10,包括小數(shù)點(diǎn)和小數(shù)點(diǎn)后兩位數(shù)字
? ? ? ? ?%10.2e ? ???輸出浮點(diǎn)數(shù)條目的寬度至少為10,包括小數(shù)點(diǎn)和小數(shù)點(diǎn)后兩位數(shù)字和指數(shù)部分
? ? ? ? ?%12s ? ? ? ? 字符串寬度至少為12個(gè)字符,如果字符串長(zhǎng)度少于12個(gè)字符,則前面補(bǔ)空格。如果多于12個(gè)字符,則自動(dòng)增長(zhǎng)
? ? ??? ?%-5c ? ? ? ??輸出字符并在后面加四個(gè)空格,即左對(duì)齊
? ? ? ? ? ?例如:String c=?String.fomat("c=%d",9); ? ? ? ? ? ? //c為字符串c=9
十、字符串與字符數(shù)組
? ? ? ? ?String ?a = new String(new char[]{'a','b','c'});
? ? ? ? ?char[] ? c = a.toCharArray();
十一、StringBuilder與StringBuffer
? ? ??StringBuilder與StringBuffer是可變類(lèi)。如果頻繁修改內(nèi)容,StringBuilder與StringBuffer比String的效率高
? ? ? StringBuffer是線(xiàn)程安全的
? ? ??StringBuilder與StringBuffer的常用方法append、delete、insert、replace、reverse、setCharAt、length、substring。
? ? ? 詳細(xì)查閱java之StringBuilder與StringBuffer
?
總結(jié)
以上是生活随笔為你收集整理的java之String的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java之包装类与BigInteger、
- 下一篇: java之StringBuider与St