java- String、StringBuffer、StringBuild

异同点

String:不可变的字符序列;底层用char[]进行存储 ;

StringBuffer:可变的字符序列;线程安全的,效率低;多线程操作一般都是用这个;底层用char[]进行存储

StringBuilder:可变的字符序列;jdk5.0新增的;线程不安全的,效率高;底层用char[]进行存储 ;

分析
//char[] value = new char[0];
String str = new String;
// char[] value = new char[]{'a','b','c'};
String str1 = new String("abc");

// char[] value = new char[16]; 底层创建了一个16长度的char数组
StringBuffer sb1 = new StringBuffer();
sb1.append('a'); // value[0] = 'a';
sb1.append('b'); // value[1] = 'b';

//char[] value = new char["abc".length() + 16]
StringBuffer sb2 = new StringBuffer("abc");
扩容问题

如果添加的数据底层数组盛不下了,那就需要扩容底层数组。默认情况下,扩容为原来容量的2倍+2,同时将原有数组元素复制到新数组中。

常用方法总结
StringBuffer append(XXX) 用于进行字符串的拼接
删 StringBuffer delete(int start,int end)  删除指定位置的内容
改 void setCharAt(int n,char ch) 指定位置放入字符 ; StirgBuffer replace(int start,int end,String str)[start,end)位置替换为str
查 char charAt(int n) 返回指定位置的字符
插 StringBuffer insert(int offset, XXX)   在指定位置插入XXX
长度 length() 
逆转 StringBuffer reverse() 把当前字符串序列逆转
效率
StringBuild > StringBuffer >> String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值