String StringBuffer StringBuilder
一、String类型的拼接
String str="爱我还是他"; str.concat("我已看不到我们的好"); System.out.println(str); //"爱我还是他"
String的concat方法只会返回拼接括号内数据后的字符串,但是这个String类型的本身并不受影响。
String str="爱我还是他"; str=str+",我已看不到我们的好"; System.out.println(str); //“爱我还是他,我已看不到我们的好”
这里的拼接符不能所在的表达式不能单独存在,必须有赋值操作。
二、StringBuffer类型的拼接
StringBuffer sb=new StringBuffer("爱我还是他"); sb.append("。"); System.out.println(sb.toString()); //“爱我还是他。” sb.insert(0, "你都已看不到我们的好,"); //这里前一个参数是插入的下标,后一个参数是插入的数据 System.out.println(sb.toString()); //“你都已看不到我们的好,爱我还是他。”
可以看到,只要运用的append或insert方法,那么StringBuffer本身的值就会改变,而不用重新赋值。
三、StringBuilder类型的拼接
StringBuilder sb=new StringBuilder("爱我还是他"); sb.append("。"); System.out.println(sb.toString()); sb.insert(0, "你都已看不到我们的好,"); System.out.println(sb.toString());
StringBuilder比StringBuffer运行速度要快,因为StringBuilder是针对于单线程的,所这它是非线程安全的。普通情况下建议使用StringBuilder。
--------------------------------------------------------------------------------------------------------------------------------------------------------
StringBuilder 没有提供clear或empty方法。
清空有3种方法:
1)新生成一个,旧的由系统自动回收
2)使用delete
3)使用setLength
StringBuilder sb2 = new StringBuilder();
sb.delete( 0, sb.length() );
sb3.setLength( 0 );
for循环中第二种效率最高 不同字符串的情况下