一、字符串连接方法不同
String 类中用“+”连接,StringBuffer类中用append()方法连接;
例如如下代码:
package Test;
public class StringDemo01 {
public static void main(String[] args) {
String str1="Hello"+" "+"World"+"!";
StringBuffer str2=new StringBuffer();
str2.append("Hello");
str2.append(" ");
str2.append("World");
str2.append("!");
System.out.println(str1);
System.out.println(str2);
}
}
方法不同,结果相同
二、String 类一旦定义了就不可变了,StringBuffer可以任意改变,这在JAVA笔试中也是易考易错题。
例如如下代码:
package Test;
public class StringDemo01 {
<span style="WHITE-SPACE: pre"></span>public static void stringReplace (String text) {
<span style="WHITE-SPACE: pre"></span> text = text.replace('j' , 'i');
<span style="WHITE-SPACE: pre"></span> }
<span style="WHITE-SPACE: pre"></span>public static void bufferReplace (StringBuffer text) {
<span style="WHITE-SPACE: pre"></span> text = text.append("C");
<span style="WHITE-SPACE: pre"></span> }
<span style="WHITE-SPACE: pre"></span>public static void main(String[] args) {
<span style="WHITE-SPACE: pre"></span>String textString = new String ("java");
<span style="WHITE-SPACE: pre"></span> StringBuffer textBuffer = new StringBuffer ("java");
<span style="WHITE-SPACE: pre"></span> stringReplace (textString);
<span style="WHITE-SPACE: pre"></span> bufferReplace (textBuffer);
<span style="WHITE-SPACE: pre"></span> System.out.println (textString + textBuffer);
<span style="WHITE-SPACE: pre"></span> }
}
输出结果是什么呢?
三、程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更高
package Test;
public class StringDemo01 {
public static void main(String[] args) {
String tempstr ="abcdefghijklmnopqrstuvwxyz";
int times = 5000;
long startTime = System.currentTimeMillis();
String str = "";
for(int i=0;i<times;i++){
str += tempstr;
}
long lendTime = System.currentTimeMillis();
long time = (lendTime - startTime);
System.out.println(time);
}
}
执行时间如下:
如果将代码调整为:
package Test;
public class StringDemo01 {
public static void main(String[] args) {
String tempstr ="abcdefghijklmnopqrstuvwxyz";
int times = 5000;
long startTime = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for(int i=0;i<times;i++){
sb.append(tempstr);
}
long lendTime = System.currentTimeMillis();
long time = (lendTime - startTime);
System.out.println(time);
}
}
执行时间如下:
对比发现,差距不在一个数量级上。