String、StringBuffer与StringBuilder的区别

1、三者在执行速度方面:String <StringBuffer<StringBuilder

    String的执行速度小于后者的原因:

    String是字符串常量,也就是不可改变的对象,StringBuffer和StringBuilder都是字符串变量;

exp:String s = "adidas";
           s = s+1;
           System.out.println(s);//result adidas1

    jvm是这样解释这段代码的:创建对象s,赋值adidas,然后再创建一个对象s用来执行第二行代码,我们之前对象没有变化,所以说String对象是不可改变的对象,由于这种机       制的存在,每当我们用String操作字符串时,实际上是在不断创建新对象,原来的对象会被gc清理掉,执行效率可想而知;

      exp:StringBuilder s2 = new StringBuilder("abc").append("def").append("fgh");

                String s1 = "abc"+"cde" + "fgh";

    这个例子 s1的执行速度快,StringBuilder并不占优势,这是因为对于jvm来说,String s1 = "abc"+"cde" + "fgh"相当于String s1 = "abccdefgh",所以执行速度快,如果字符串来自另外的对象,那么jvm就会按步骤一步一步执行,就不会那么快了;

2、StringBuffer与StringBuilder

StringBuffer是线程安全的,StringBuilder是线程非安全的,在不考虑线程安全性的情况,StringBuilder操作字符串的执行效率更高一些。



只是一些学习笔记,会有别处借鉴的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值