StringBuilder:
StringBuilder代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
好处: StringBuilder比String更适合做字符串的修改操作,效率会更高,代码会更简洁。
API文档:
StringBuilder功能真的非常丰富。
package cn.ensource.d16_stringbuiilder;
public class Test {
public static void main(String[] args) {
// 目标:搞清楚StringBuilder的用法和作用
StringBuilder s = new StringBuilder("itheima");
// 1. 拼接内容
s.append(" Java");
s.append(123);
// 2. 支持链式编程的
s.append(666).append("黑马");
// 3. reverse方法
System.out.println(s);
s.reverse();
System.out.println(s);
// 4. length,返回字符串的长度
System.out.println(s.length());
// 5. 把StringBuilder对象又转换成String类型
String res = s.reverse().toString();
System.out.println(res);
}
}
支持链式编程。append方法。
为啥我们的Java建议使用StringBuilder,而不用原来学过的String?
package cn.ensource.d16_stringbuiilder;
public class Test2 {
public static void main(String[] args) {
// 目标:掌握StringBuilder的好处
// 需求:要拼接100万次abc
// 先用String测试性能
// String rs = "";
// for (int i = 1; i <= 1000000; i++) {
// rs = rs + "abc";
// }
// System.out.println(rs);
// 使用StringBuilder演示
StringBuilder s = new StringBuilder();
for (int i = 1; i <= 1000000; i++) {
s.append("abc");
}
System.out.println(s);
// 可见StringBuilder操作字符串非常快速!!!!
}
}
今后:
对于字符串的相关的操作,如果频繁的拼接、修改等,建议使用StringBuilder,效率高!!!
注意:如果操作字符串较少,或者不需要修改,以及定义字符串变量,还是建议使用String。
StringBuffer和StringBuilder:
注意:
StringBuffer的用法与StringBuilder是一模一样的。
但是StringBuilder是线程不安全的,StringBuffer是线程安全的。
两者API的方法基本上都是一样的。
将来很多用户进入系统,会存在线程不安全的情况。现在我们先记住这个观点。
案例:
返回任意整形数组的内容:
需求:
设计一个方法,用于返回任意整形数组的内容,要求返回的数组内容格式如:[11, 22, 33]
分析:
1)方法是否要接收数据呢?需要接收整形数组。
2)方法是否需要返回数据呢?需要返回一个拼接的结果,字符串类型
3)方法内部:遍历数组的数据,把遍历的数据都拼接起来,此时使用StringBuilder来完成拼接。
package cn.ensource.d16_stringbuiilder;
public class Test3 {
public static void main(String[] args) {
// 案例
String res = getArrayData(new int[]{11, 22, 33});
System.out.println(res);
}
/**
* getArrayData方法
*/
public static String getArrayData(int[] arr) {
// 判断arr是否为null
if (arr == null || arr.length == 0) {
return null;
}
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]);
if (i != arr.length - 1) {
sb.append(", ");
}
}
sb.append("]");
return sb.toString();
}
}