`

String,StringBuffer和StringBuilder的区别

阅读更多
三者都是能生成保存字符串对象的类,只不过在对字符串的操作上有所不同。

在性能方面,一般情况下StringBuilder>StringBuffer>String,但这是有局限性的。

首先说String,String是一种只读字符串对象,如果要改变字符串,改变的是String对象引用的指向,将应用变量指向新的字符串对象。旧的字符串对象会暂时保存在

而StringBuffer和StringBuilder是可读写的字符串对象,两者的方法大致都是相同的,只不过StringBuffer是在多线程中线程安全的,而StringBuilder是运用在单线程中的。

常用方法:append(str)向对象中添加字符串,有重载方法,方法参数可以是多种primitiv主数据类型;

insert();方法,添加字符串变量,并且有许多重载的方法,例如指定下标添加字符串;
reverse();将对象中的字符串顺序倒置等等。

length方法返回的是实际对象中字符串的长度,不管他的默认大小是多少,

capacity方法是当实际的字符串长度小于默认长度时,返回默认长度,当大于默认长度时又小于默认长度的二倍+2时,返回默认长度的二倍+2的值,其实就是将字符串容器扩容到默认长度*2+2;当实际字符串还更大时,就返回实际字符串长度的二倍,StringBuilder和StringBuffer的默认长度是16;ArrayList和LinkedList的默认长度是10;

例如,实际长度是4,则capacity方法返回16;实际长度是32(16<32<16*2+2),则返回34;如果实际长度是53(53>16*2+2),则返回53*2=106。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics