- package com.ffyc.javaapi.stringdemo.buffer;
-
- public class StringBufferDemo {
-
- public static void main(String[] args) {
- /*
- 线程安全, 底层可变字符串
- char[] value;
- AbstractStringBuilder(int capacity) {
- value = new char[capacity];
- }
- super(16); 默认长度
- super(str.length() + 16); 使用传入字符串创建对象,生成的底层数组为传入的字符串长度+16
- 当向StringBuffer中添加内容时,是将内容添加到底层的数组中,数组没有被final修饰,
- 当数组装满时,会创建一个新的数组,将新数组地址给底层数组,StringBuffer对象是不会改变的.
- */ //new StringBuffer(30); 指定生成底层数组的长度
- //new StringBuffer();// 默认底层char数组长度是16
-
- /* StringBuffer stringBuffer = new StringBuffer("abcd");//20
- stringBuffer.append("efg111");
- stringBuffer.append("efg2222");
- stringBuffer.append("efg2222");//向末尾追加内容,当数组装满时创建新的底层数组
- System.out.println(stringBuffer);
- */
-
- StringBuffer stringBuffer = new StringBuffer("abcdefg");//23
-
- //stringBuffer.insert(2,"xx");//向指定的位置插入字符串
-
- //stringBuffer.deleteCharAt(1);//删除指定位置的字符
-
- //stringBuffer.delete(0,3);//删除指定区间的内容 包含开始,不包含结束
-
- //stringBuffer.replace(0,3, "XXX");//替换
-
- //stringBuffer.reverse();//逆序字符串
-
- //String sub = stringBuffer.substring(2);//截取从指定位置开始到结束一个字符串副本返回
-
- //String sub = stringBuffer.substring(2,5);//截取从指定位置开始到指定位置结束一个字符串副本返回
-
- //System.out.println(sub);
- System.out.println(stringBuffer);
- String s1 = "abcd";
- System.out.println(s1.length());//4
-
- System.out.println(stringBuffer.length());//返回的是底层数组中实际转入的字符个数
- stringBuffer.append("efg111");
-
-
- }
- }
-
- public class StringBuilderDemo {
-
- /*
- 多线程不安全 可变字符串
-
- 这两个类的区别
- @Override
- public StringBuilder append(String str) {
- super.append(str);
- return this;
- }
- @Override
- public synchronized StringBuffer append(String str) {
- toStringCache = null;
- super.append(str);
- return this;
- }
- String : 底层都是数组实现 final char[] 值不能改变, 改变后会创建一个新的对象
- StringBuffer : 线程安全的 可变字符串 char[]
- StringBuilder: 线程不安全 可变字符串
- */
- public static void main(String[] args) {
- // new StringBuilder();
- // new StringBuilder("abcd");
- StringBuilder stringBuilder = new StringBuilder(30);
- stringBuilder.append("aaa");
- stringBuilder.insert(2,"aaaa");
-
- }
- }