(8)Java常用类库与工具

借助JDK文档,选取String与StringBuffer、StringBuilder的常用API,并编写实例测试API的功能。

请简述String,StringBuffer,StringBuilder三者之间的共同点与区别,应该分别在何种场景下使用?

共同点:内部实现基于字符数组,封装了对字符串处理的各种操作;可自动检测数组越界等运行时异常。区别:String内部实现基于常量字符数组,内容不可变;StringBuffer、StringBuilder基于普通字符数组,数组大小可根据字符串的实际长度自动扩容,内容可变;性能方面,对于字符串的处理,相对来说效率:StringBuilder >StringBuffer>String;StringBuffer线程安全,StringBuilder非线程安全。使用场景:String:对安全要求更高;StringBuffer、StringBuilder:对性能要求更高。

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

常用的字符串拼接方式有五种,分别是+concatStringBuilderStringBuffer以及StringUtils.join。用时从短到长的对比:StringBuilder < StringBuffer < concat < + < StringUtils.join。由于字符串拼接过程中会创建新的对象,所以如果要在一个循环体中进行字符串拼接,就要考虑内存问题和效率问题。而“+”反编译后的代码,在for循环中,每次都是new了一个StringBuilder,然后再把String转成StringBuilder,再进行append。而频繁的新建对象当然要耗费很多时间了,不仅仅会耗费时间,频繁的创建对象,还会造成内存资源的浪费。因此,经过对比发现,直接使用StringBuilder的方式是效率最高的。因为StringBuilder天生就是设计来定义可变字符串和字符串的变化操作的。但是,还要强调的是:如果不是在循环体中进行字符串拼接的话,直接使用+就好了;如果在并发场景中进行字符串拼接的话,要使用StringBuffer来代替StringBuilder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值