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