String str= "abc"; 常用的创建字符串对象 (不可变的字符串序列,定义出来就像一个常量)
StringBuffer *可变*的字符序列 (理解为存放字符串的集合或*容器*)
//创建了一个容器 自增长 默认初始长度为16 个字符
StringBuffer sb=new StringBuffer();
sb.append();//添加 虽然可以添加多种类型 但是会*自动转换*成字符串类型
StringBuffer sb=new StringBuffer("aaa"); 初始化自带字符串 aaa
StringBuffer sb=new StringBuffer(20); 初始化自带默认指定容量
//append();返回的是StringBuffer本身
StringBuffer sb1=new StringBuffer("aaa"); 1
StringBuffer sb2=new StringBuffer(false);
StringBuffer sb3=new StringBuffer(5);
sb1.append(3.5);
syso(sb1);
syso(sb2);
syso(sb3);
因为append返回的是类本身,不会再开辟空间 sb1 sb2 sb3 只是类对象的引用(指向同一块空间)
都是操作的同一块空间 所以内存上的内容变化 引用也会跟着变化 三个输出结果一样
sb.capacity(); 返回当前容量 引用返回的容量也一样
sb.delete("aaa"); 移除aaa
sb.deleteCharAt(2);移除第二个位置的元素
sb.delete(0,2); 移除 包含头不包含尾
//将此序列复制到目标的字符数组中
sb.getChars(int srcBegin, int srcEnd,char[]dst,int dstBegin);
sb.insert(0,"aaa"); 从第零个位置插入aaa
sb.reverse(); 字符串反转 (a到z排序 反转后变成 z到a 排序)
StringBUffer在线程方面的用处,要是把数据放到里面,相当于加同步(共享数据)
线程安全,效率低一些,每次都要判断一下同步
StringBuilder 线程不安全 效率高一些
主要是用Builder 不安全概率极低 主要考虑效率
方法和StringBuffer一样的用法
*********添加返回的数据都是其本身
StringBuffer *可变*的字符序列 (理解为存放字符串的集合或*容器*)
//创建了一个容器 自增长 默认初始长度为16 个字符
StringBuffer sb=new StringBuffer();
sb.append();//添加 虽然可以添加多种类型 但是会*自动转换*成字符串类型
StringBuffer sb=new StringBuffer("aaa"); 初始化自带字符串 aaa
StringBuffer sb=new StringBuffer(20); 初始化自带默认指定容量
//append();返回的是StringBuffer本身
StringBuffer sb1=new StringBuffer("aaa"); 1
StringBuffer sb2=new StringBuffer(false);
StringBuffer sb3=new StringBuffer(5);
sb1.append(3.5);
syso(sb1);
syso(sb2);
syso(sb3);
因为append返回的是类本身,不会再开辟空间 sb1 sb2 sb3 只是类对象的引用(指向同一块空间)
都是操作的同一块空间 所以内存上的内容变化 引用也会跟着变化 三个输出结果一样
sb.capacity(); 返回当前容量 引用返回的容量也一样
sb.delete("aaa"); 移除aaa
sb.deleteCharAt(2);移除第二个位置的元素
sb.delete(0,2); 移除 包含头不包含尾
//将此序列复制到目标的字符数组中
sb.getChars(int srcBegin, int srcEnd,char[]dst,int dstBegin);
sb.insert(0,"aaa"); 从第零个位置插入aaa
sb.reverse(); 字符串反转 (a到z排序 反转后变成 z到a 排序)
StringBUffer在线程方面的用处,要是把数据放到里面,相当于加同步(共享数据)
线程安全,效率低一些,每次都要判断一下同步
StringBuilder 线程不安全 效率高一些
主要是用Builder 不安全概率极低 主要考虑效率
方法和StringBuffer一样的用法
*********添加返回的数据都是其本身