Java---可变字符串

Java—可变字符串

String类描述的字符串是不可变的,是一个常量,当我们在需要对大量的字符串进行描述时,就只能单独的申请和存储,这样会造成内存空间的浪费。
为了解决这样的问题,可以使用java.lang.StringBuilder和java.lang.StringBuffer类来描述组字符序列可变的字符串

StringBuffer:线程安全,效率低
StringBuilder:线程不安全,效率高

StringBuilder的常用构造方法:

  • StringBuilder() : 无参构造,初始的容量为16;
  • StringBuilder(int capacity) : 有参构造,参数为容量,容量为指定的大小
  • StringBuilder(String str) : 有参构造,参数为字符串,容量为指定的字符串的长度+16
StringBuilder str = new StringBuilder();
int a = str.capacity;//a = 16
int b = str.length;//b = 0

StringBuilder str1 = new StringBuilder(10);
int a1 = str1.capacity;//a1 = 10
int b1 = str1.length;//b1 = 0

StringBuilder str2 = new StringBuilder("abc");
int a2 = str2.capacity;//a1 = 19
int b2 = str2.length;//b1 = 3

StringBuilder的常用成员方法

StringBuilder insert(int offset, String str):插入字符串并返回调用对象的引用就是自己

StringBuilder str1 = new StringBuilder("abc");
StringBuilder str2 = str1.insert(0,"fff");
System.out.println(str1);//fffabc
System.out.println(str2)//fffabc
StringBuilder str3 = str1.insert(2,"123");
System.out.println(str3);//ff123fabc
StringBuilder str4 = str1.insert(str1.length(),ABC);//ff123fabcABC

StringBuilder append(String str):在字符串末尾追加字符串

StringBuilder str = new StringBuilder("abc");
StringBuilder str1 = str.append("ABC");
System.out.prinln(str1);//abcABC

StringBuilder deleteCharAt(int index):将当前字符串中下标为index位置的单个字符删除

StringBuilder str = new StringBuilder("abc");
str.deleteCharAt(2);//删除下标为2的单个字符
System.out.prinln(str);//ab

StringBuilder delete(int start,int end):删除字符串

StringBuilder str = new StringBuilder("abcfff");
str.delete(3,str.length());
System.out.prinln(str);//abc

StringBuilder replace(int start,int end,String str):替换字符串

StringBuilder str = new StringBuilder("abcfff");
str.setCharAt(0,'b');//修改单个字符 当前字符串为bbcfff
str.replace(3,str.length(),"XXX");
System.out.println(str);//bbcXXX

StringBuilder reverse():字符串反转

StringBuilder str = new StringBuilder("abc");
str.reverse();
System.out.println(str);//cba

StringBuilder类的扩容算法

当字符串的长度超过了字符串对象的初始容量是,该字符串对象会自动扩容,默认扩容算法是:原始容量*2 + 2

StringBuilder类的对象本身可以修改,为什么StringBuilder中的成员方法还有返回值

StringBuilder中的成员方法一般都是返回调用对象本身,这种方式便于进行连续调用,例如:

StringBuilder str = new StringBuilder("abc");
str.reverse().append("fff").append("123").insert(0,"111").delete(03).reverse();

如何实现StringBuilder和String类型之间的转换

StringBuilder sb = new StringBuilder("abc");
String str = sb.toString();//StringBuilder转换为String类型
StringBuilder sb2 = new StringBuilder(str);//String转换为StringBuilder类型

String,StringBuilder,StringBuffer之间的效率比较

String<StringBuffer<StrringBuilder

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值