JAVA中的String类--字符链接运算符“+”

关于“+”运算符,不同的平台实现上可能会有不同:
1、官方JDK1.7的实现:当使用“+”时,会创建一个临时的StringBuilder对象,该对象调用append()方法负责字符串的链接,然后调用toString()方法转化成字符串String对象。

String str=new String("this is str");
str=str+"!"//等价下面的
//str=new StringBuilder().append(str).append("!").toString();
System.out.println(str);

2、Eclipse上的实现
不同的编译器在处理运算符“+”时会略有不同,如果“+”左边的操作数是基本数据类型或者String类型时,处理过程是:

int s1=10;
//String str=s1+"!";
String str=new StringBuilder(String.valueOf(s1))
.append("!").toString();    

3、使用运算符“+”链接两个字符串时,若两个都是编译时字符串常量,那么在编译时就会进行连接。

String str1="abc"+"cse";//运行时不创建
String str2="cde"+str1;//运行时创建
String str3=str1+str2;//运行时创建

4、关于“+”的性能
这里给出一个判断其性能的程序,因为“+”会常见临时对象,所以在使用次数比较多时对性能有很大影响。


public class main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        long start,stop;
        String str1="";
        String str2="";
        start=System.nanoTime();
        for (int i = 0; i < 10000; i++) {
            str1=str1+i;
        }
        stop=System.nanoTime();
        System.out.println("use \"+\""+(stop-start));
        start=System.nanoTime();
        StringBuilder stringBuilder=new StringBuilder();
        for (int i = 0; i < 10000; i++) {
            stringBuilder.append(i);
        }
        str2=stringBuilder.toString();
        stop=System.nanoTime();
        System.out.println("do not use \"+\""+(stop-start));
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值