Java第七讲

Java第七讲

  1. 简述String,StringBuffer,StringBuilder三者的异同点,应该分别在何种场景下使用?

    共同点:三者都是字符串类型,它们可以储存和操作字符串。
    不同点:
    (1)String对象是不可变的,String类是用final修饰的,内容不能被引用的字符串改变,每次对String对象进行改变的过程都等价于创建一个新对象,然后指向新对象,不仅效率低下,而且浪费有限的内存空间。而StringBuffer和StringBuilder表示的字符串对象可以直接进行修改,其对象能被多次修改,且不产生新对象。
    (2)StringBuffer是线程安全类,StringBuilder是在单线程环境下使用的,它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer要高。
    使用环境:
    (1)String:在字符串不经常变化的场景中可以使用String,例如常量的声明、少量的变量运算。
    (2)StringBuffer:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以使用StringBuffer,例如XML解析、HTTP参数解析和封装。
    (3)StringBuilder:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以使用StringBuilder,如SQL语句的拼装、JSON封装等。

  2. 为什么不建议在for循环中使用 “+” 进行字符串拼接?

    因为每次“+”相当于创建一个StringBuilder类对象,再把String类转化为StringBuilder类执行append,每次循环创建一个新对象浪费时间和空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值