039.StringBuilder的常规操作和链式操作
1.Java编译器对String
做了特殊处理,虽然可以直接拼接字符串,但是,在循环中,每次循环都会创建新的字符串对象,然后扔掉旧的字符串。这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC效率。为了能高效拼接字符串,Java标准库提供了StringBuilder
,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder
中新增字符时,不会创建新的临时对象:
package com.array.test; public class StringBuilderTest { public static void main(String[] args) { //常规操作 StringBuilder stringBuilder = new StringBuilder(1024); for (int i = 0; i < 10; i++) { stringBuilder.append(i); if (i != 9) { stringBuilder.append(','); } } String s = stringBuilder.toString(); System.out.println(s); } }
2.StringBuilder
还可以进行链式操作,进行链式操作的关键是,定义的append()
方法会返回this
,这样,就可以不断调用自身的其他方法。仿照StringBuilder
2.1创建Adder类
package com.array.test; public class Adder { private int sum = 0; public Adder add(int n) { sum += n; return this; } public Adder inc() { sum ++; return this; } public int value() { return sum; } }
2.2在StringBuilderTest中编写测试方法
package com.array.test; public class StringBuilderTest { public static void main(String[] args) {//进行链式操作的关键是,定义的append()方法会返回this,这样,就可以不断调用自身的其他方法 Adder adder = new Adder(); adder.add(3); adder.add(5); adder.inc(); adder.add(10); System.out.println(adder.value()); } }