String字符串拼接效率比较

字符串进行拼接方法:加号、contact方法和StringBuffer(StringBuilder)
也可以用 String.valueOf( ):

 public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

1.“+”方法拼接字符串

在基础类前面加一个空串(”“+1)是最简单的方法,这个表达式的结果就是一个String,在这之后你就可以随意的进行字符串拼接操作了——编译器会自动将那些基础类型全转化成String的。但是这是这是最糟糕的实现方法(注意,这里不是确定量即常量字符串相加,因为如果是常量字符串相加,编译器会直接优化)。

当相加的字符串中包含不确定量(变量)时,string_exp + any_exp 编译器将“+”编译为StringBuilder实现:new StringBuilder().append( string_exp ).append( any_exp ).toString(),如果表达式里有多个+号的话,后面相应也会多多几个StringBuilder.append的调用,最后才是toString方法。
它每次拼接都会创建一个StringBuilder对象,并且还要调用toString()方法将其转换为字符串,这样性能就大大降低了。

2 StringBuilder.append()方法拼接

源码:

public AbstractStringBuilder append(String str){
        //如果为null值,则把null作为字符串处理
        if(str==null) str = "null";
        int len = str.length();
        //字符长度为0,则返回本身
        if(len == 0) return this;
        int newCount = count +len;
        //追加后的字符数组长度是否超过当前值
        if(newCount > value.length()){
            //加长,并做数组拷贝
            expanCapacity(newCount);
        }
        //字符串复制到目标数组
        str.getChars(0, len, value, count);
        count = newCount;
        return this;
    }

转载链接:
http://it.deepinmind.com/java/2014/03/24/java-string-performance.html
http://www.cnblogs.com/0x00000000/archive/2012/06/08/string_append.html#top
http://magina.blog.51cto.com/5235631/1327724

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值