StringBuilder和StringBuffer区别

String是不可变字符序列

StringBuilder和StringBuffer是可变字符序列,它们都继承于抽象类AbstractStringBuilder,用法一样。

区别:

StringBuilder的线程不安全,但是效率高。

StringBuffer的线程安全,但是效率低。

StringBuilder:

StringBuilder sb = new StringBuilder(); //这里初始化一个默认长度16的char数组

StringBuilder sb = new StringBuilder(32); //这里初始化一个长度为32的char数组

StringBuilder sb = new StringBuilder("abcd");//这里初始化一个长度为4+16=20的char数组。value[]={'a','b','c','d',\u0000,\u0000...}

sb.append("edf"); //value[]={'a','b','c','d','e','d','f',\u0000,\u0000...}

方法链:

sb.append("edf").append("ghi").append("jkl");//因为append方法里面返回值为retuen this;所以前面的sb.append("edf")可以被看作为sb,从而实现方法链!

System.out.println(sb);

StringBuilder gh = new StringBuilder("a");//但是这里有个问题,如果i<n,n足够大的情况下,是不是超出了StringBuilder的有效范围了呢?(这里的有效范围为a+16=17)

  for(int i=0;i<10;i++){

    gh.append(i);

  }

System.out.println(gh);  //这样的话,从始至终只生成了2个对象,很好的解决了之前的String类的资源浪费的问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值