Java的String和StringBuffer的区别及应用场景

一、String

String类不是一个原始类型,可以通过它的定义分析。

String类的定义:

private final char value[];

通过String类的定义我们可以看出一旦创建了这个对象,那它的值是不能改变的,对于已存在的String对象的修改实质上是创建一个新的对象,然后把新对象的值存进去。

二、StringBuffer

StringBuffer是一个可变对象,对它的值进行修改不会像String那样重新构造对象。

它只能用构造函数来创建 StringBuffer a = new StringBuffer();

再通过append给它赋值,a.append("Hello");

三、各自的应用场景

字符串连接操作中StringBuffer的效率要比String高: 
String str = new String("welcome to "); 
str += "here"; 
的处理步骤实际上是通过建立一个StringBuffer,然后调用append(),最后 
再将StringBuffer toSting(); 
这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.
我们通过一个列子可以看出这个区别;
public class Test {  
    public static void main(String args[]) {  
          
        String str = "abc";  
        StringBuffer sb = new StringBuffer("abc");  
        Runtime runtime = Runtime.getRuntime();  
        long start = System.currentTimeMillis();  
        long startFreememory = runtime.freeMemory();  
        for (int i = 0; i < 10000; i++) {  
            str += i;  
            //测试StringBuffer时候把注释打开  
            //sb.append(i);  
        }  
        long endFreememory = runtime.freeMemory();  
        long end = System.currentTimeMillis();  
        System.out.println("操作耗时:" + (end - start) + "ms," + "内存消耗:"  
                + (startFreememory - endFreememory)/1024 + "KB");  
    }  
}  

运行结果:

使用String做10000次向一字符串后添加字符串

操作耗时:1872ms,内存消耗:1301KB

 

使用StringBuffer做10000次向一字符串后添加字符串

操作耗时:15ms,内存消耗:162KB


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值