1. 借助JDK文档, 选取String与StringBuffer 、StringBuilder的常用API,并编写实例测试API的功能。
2. 请简述String,StringBuffer,StringBuilder三者之间的共同点与区别,应该分别在何种场景下使用?
相同点:
1、内部实现基于字符数组,封装了对字符串处理的各种操作
2、可自动检测数组越界等运行时异常
不同点:
1、String内部实现基于常量字符数组,内容不可变;
StringBuffer、StringBuilder基于普通字符数组,数组大小可根据字符串的实际长度自动扩容,内容可变
2、性能方面,对于字符串的处理,相对来说
StringBuilder >StringBuffer>String
3、StringBuffer线程安全;StringBuilder非线程安全
使用场景:
String:对安全要求更高。
StringBuffer、StringBuilder:对性能要求更高
3. 为什么不建议在for循环中使用“+”进行字符串拼接?
String对象是不可变的,在String类中每一个 看起来会修改String对象内容的方法,实质都是创建了一个全新的对象。
所以在for循环中每使用一次"+"运算符进行字符串拼接都创建了一个对象,随着循环次数的增加,创建的对象也随之增加,所占内存过多。