简单来说:
1、基本概念,string字符串常量,长度不可变;stringBuffer字符串变量,长度可变(线程安全);stringBuilder字符串变量,长度可变(非线程安全);
2、执行效率,就单个字符串对象效率比较来说string>stringBuilder>stringBuffer;
举个简单的例子,string=“abc”+“def”+“ghi”;JVM在创建string对象时会认为string=“abcdefghi”;执行效率相当快
相比之下stringBuffer来说stringBuffer strBuff=new stringBuffer();strBuff.append("abc").append("def")+append("ghi");速度上来说是比不上string的。
但是如果需要创建多个string来说,stringBuffer是可变长度,效率比较为stringBuilder>stringBuffer>string。
举个例子:string num1=“abc”;
string num2=“def”;
string num3=“ghi”;来说JVM要创建三个string对象,当三个对象使用完之后JVM还的对这三个对象自动回收(AutoClose),所以采用可变长度stringBuffer要效率高。
3、基本操作方法:stringBuffer,stringBuilder的操作一样,下面只对stringBuffer操作和string操作作讲解。
1、三者之间的转换问题: stringBuffer转换string对象,string str=new string(stringBuffer strBuff);
string转换为stringBuffer对象 stringBuffer strBuff=new stringBuffer(string str);
2、我们最常见的Tostring方法,其实他是基本数据类型valueof()字符转换方法中的子方法。
charAt()单个字符转换方法,char charAt(int index);例如 char ch;ch=“abc”.charAt(2);即把c赋值给ch变量。
getChars()多个字符提取方法:一般形式为 void getChars(int sourseState,int sourseEnd,Char target [ ],int targetStart);
getBates()字符到字节转换方法:一般形式 byte[ ] getBytes();
toCharArray()字符转换为字符数组方法;一般形式 char [] toCharArray(0;
4.字符串比较,主要方法为equals()内容比较方法,它与“==”是有区别的,后者在于对象的是否相等。
equalsIgnoreCase()不区分大小写比较相等。
regionMatches()比较一段字符与另一段字符中的一段是否相等
bollean regionMaches(int startindex,string str2,int str2StartIndex,int numChars);
bollean regionMaches(bollean ignoreCase,int startindex,string str2,int str2StartIndex,int numChars);ignoresCase为true表示则忽略大小写,否则大小写有意义。
其他方法读者自己领悟