JAVA学习之StringBuffer 与Sring类的区别(实例展示)

一、字符串连接方法不同

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);  
		    }   
}

执行时间如下:

对比发现,差距不在一个数量级上。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值