區(qū)別與聯(lián)系:
1.StringBuffer是線程安全的,String和StringBuilder不是;
2.StringBuffer和StringBuilder都是可變的,修改是針對(duì)自身的,而String是不可變的,修改一次就創(chuàng)建一個(gè)新的String對(duì)象;
3.String和StringBuffer都是final類型;
4.一般,效率上StringBuiler>StringBuffer>String
5.StringBuilder是5.0新增的;
用法:
一、String
1.常用構(gòu)造函數(shù):
1)String(char[] value):
eg:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
2)String(String original):
3)String(StringBuffer buffer):
4)String(StringBuilder builder):
5)String(byte[] bytes, String charsetName) :
eg:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1");
String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8");
注意:GBK編碼是一個(gè)中文2個(gè)字節(jié),而UTF-8編碼是一個(gè)中文3個(gè)字節(jié),
ISO-8859-1編碼是一個(gè)字節(jié)對(duì)應(yīng)一個(gè)字符;
String gbk = "我來(lái)了";
String iso = new String(gbk.getBytes("UTF-8"),"ISO-8859-1");
2.常用方法:
1)charAt 方法,返回指定index的字符。
String string ="123456789";
char a =string.charAt(2);
System.out.print(a);
a=3
2)indexOf(int ch)
ch:unicode code point,如果字符串中沒有ch,則返回-1
String ss = "abcde";
System.out.println(ss.indexOf(2));
System.out.println(ss.indexOf(98));
結(jié)果:-1 1
因?yàn)?對(duì)應(yīng)的unicode在字符串ss中不存在,所以返回值-1,98對(duì)應(yīng)的unicode 是b,所以返回值是index=1
3)concat(String str)將參數(shù)連接到字符串的末尾
concatenate 如鎖鏈般連續(xù),使連鎖,連結(jié)
string ="abc";
System.out.print(string.concat("123"));
結(jié)果:abc123
如果str的length是0,那么這個(gè)String就會(huì)被返回。
4)hashCode 返回字符串的hashCode值
String string0 ="abc";
String string1 ="abc";
System.out.println(string1.hashCode());
System.out.println(string1.hashCode());
結(jié)果:
96354
96354
5)contains(CharSequence s)是否包含參數(shù)
String string0 ="abcdef";
System.out.println( string0.contains("de"));
結(jié)果:true
6)startsWith(String perfix) 是否以perfix開頭,yes 返回true ,no返回false
String string ="abcbd";
System.out.println( string.startsWith("abc"));
System.out.println( string.startsWith("Ab"));
結(jié)果:true
false
7)endsWith(String suffix)是否以suffix結(jié)尾,yes 返回true ,no返回false
String string ="abcde";
System.out.println( string.endsWith("e"));
結(jié)果:true
8)trim()去掉字符串的前后空格
String string =" abc ";
System.out.println(string.length()+","+ string.trim().length());
結(jié)果:5,3
9)length() 字符串的長(zhǎng)度
char chars[]={'a','b'.'c'};
String s=new String(chars);
int len=s.length();
10)char[] toCharArray() 將一個(gè)字符串轉(zhuǎn)換成一個(gè)字符數(shù)組
11)equals()和equalsIgnoreCase() 比較兩個(gè)字符串
12)substring()
第一種是:String substring(int startIndex)
第二種是:String substring(int startIndex,int endIndex)
13)toLowerCase() 和toUpperCase()
二、StringBuffer
1、構(gòu)造器:
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)
2、方法:
1)append() 可把任何類型數(shù)據(jù)的字符串表示連接到調(diào)用的StringBuffer對(duì)象的末尾
2)insert(int offset,Object) 在offset處插入Object對(duì)應(yīng)的字符串到StringBuffer對(duì)象
3)delete(int start,int end) 刪除字符
4)indexOf()
5)reverse() 顛倒StringBuffer對(duì)象中的字符
6)length()
7)toString()
8)subString(int start) 或subString(int start,int end)截取子串
三、StringBuilder
1.構(gòu)造器
與StringBuffer相同
2.常用的方法:
與StringBuffer相同
1)追加:Append
2)插入:Insert
3)刪除:Remove
4)替換:Replace
參考來(lái)源:
http://m.tkk7.com/chenpengyi/archive/2006/05/04/44492.html
http://zhuhuide2004.iteye.com/blog/562739
http://www.iteye.com/topic/1097560
http://www.cnblogs.com/crazyac/articles/2012791.html