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是否为nullif (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();}
}