package stringbuffer;
publicclass Demo2 {
publicstaticvoid main(String[] args) {
StringBuffer sb = new StringBuffer("dddddd");//StringBuffer含有有参构造方法,可以传入一个int类型的值表示指定字符串缓冲区的初始容量(23个字符)。如果是无参构造方法,默认初始容量是16个字符。
System.out.println(sb);//输出时调用toString方法,StringBuffer类自动重写了object类的该方法,返回的是此字符序列的字符串表示形式。输出的是空白,因为创建的对象没有任何内容。
System.out.println(sb.capacity());//输出的是字符串缓冲区的当期容量(22),原来默认的16,加上对象中的字符序列(dddddd)的长度6。当不断向这个对象里追加字符序列时,如果超弱了当前的容量,那么会自动扩充容量,扩充后的容量是上一次容量+1再乘以2.
System.out.println(sb.length());//返回当前字符序列的长度。 StringBuffer sb1 = new StringBuffer("abc");
//链式编程
sb1.append(true).append('a').append(1.3).append(100);//append()有很多个重载方法,可以将各种类型的数据转换为字符串形式追加在当前字符串中。
sb1.insert(3, false).delete(3, 6).deleteCharAt(1);//insert()将参数的字符串表现形式插入到当前序列中,第一个参数表示偏移量,即在该位置上插入参数值。delete(intstart,int end)删除指定位置的字符,包头不包尾。deleteCharAt()删除指定索引处的字符。
System.out.println(sb1);
System.out.println(sb1.capacity());//默认16+初始"abc"3=19 sb1.replace(3, 6, "java").reverse();//反转
System.out.println(sb.substring(2,5));//字符串截取(从索引2到索引5,包头不包尾)
System.out.println(sb1);
}
}