区别与联系:
1.StringBuffer是线程安全的,String和StringBuilder不是;
2.StringBuffer和StringBuilder都是可变的,修改是针对自身的,而String是不可变的,修改一次就创建一个新的String对象;
3.String和StringBuffer都是final类型;
4.一般,效率上StringBuiler>StringBuffer>String
5.StringBuilder是5.0新增的;
用法:
一、String
1.常用构造函数:
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编码是一个中文2个字节,而UTF-8编码是一个中文3个字节,
ISO-8859-1编码是一个字节对应一个字符;
String gbk = "我来了";
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));
结果:-1 1
因为2对应的unicode在字符串ss中不存在,所以返回值-1,98对应的unicode 是b,所以返回值是index=1
3)concat(String str)将参数连接到字符串的末尾
concatenate 如锁链般连续,使连锁,连结
string ="abc";
System.out.print(string.concat("123"));
结果:abc123
如果str的length是0,那么这个String就会被返回。
4)hashCode 返回字符串的hashCode值
String string0 ="abc";
String string1 ="abc";
System.out.println(string1.hashCode());
System.out.println(string1.hashCode());
结果:
96354
96354
5)contains(CharSequence s)是否包含参数
String string0 ="abcdef";
System.out.println( string0.contains("de"));
结果: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"));
结果:true
false
7)endsWith(String suffix)是否以suffix结尾,yes 返回true ,no返回false
String string ="abcde";
System.out.println( string.endsWith("e"));
结果:true
8)trim()去掉字符串的前后空格
String string =" abc ";
System.out.println(string.length()+","+ string.trim().length());
结果:5,3
9)length() 字符串的长度
char chars[]={'a','b'.'c'};
String s=new String(chars);
int len=s.length();
10)char[] toCharArray() 将一个字符串转换成一个字符数组
11)equals()和equalsIgnoreCase() 比较两个字符串
12)substring()
第一种是:String substring(int startIndex)
第二种是:String substring(int startIndex,int endIndex)
13)toLowerCase() 和toUpperCase()
二、StringBuffer
1、构造器:
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)
2、方法:
1)append() 可把任何类型数据的字符串表示连接到调用的StringBuffer对象的末尾
2)insert(int offset,Object) 在offset处插入Object对应的字符串到StringBuffer对象
3)delete(int start,int end) 删除字符
4)indexOf()
5)reverse() 颠倒StringBuffer对象中的字符
6)length()
7)toString()
8)subString(int start) 或subString(int start,int end)截取子串
三、StringBuilder
1.构造器
与StringBuffer相同
2.常用的方法:
与StringBuffer相同
1)追加:Append
2)插入:Insert
3)删除:Remove
4)替换:Replace
参考来源:
http://www.blogjava.net/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