string字符串内容倒叙_面试题:String,StringBuffer 和StringBuilder三者的区别,以及如何实现一个字符串倒序?...

面试题:String , StringBuffer 和StringBuilder三者的区别,以及如何实现一个字符串倒序?

答案

String 的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer或者StringBuilder。StringBuffer 和 StringBuilder主要区分是在线程安全和执行速度上。StringBuffer线程安全但速度慢,StringBuilder非线程安全但速度快。

字符串倒序

字符串“abcde”通过写一个函数不让调用第三方的字符串,实现一个字符串倒序,比如字符串“abcde” 变成“edcba”

答: String src = "ABCDEF ";

String dst = new StringBuffer(src).reverse().toString();

private String reverse(String src){

return new StringBuffer(src).reverse().toString();

}

探究String和StringBuffer的区别

String 字符串(长度不可变)

String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。

因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

探究StringBuffer 和 StringBuilder 类的区别

StringBuffer 字符串变量(线程安全,但执行速度慢)

StringBuilder 字符串变量(非线程安全,但执行速度快)

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

总结

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

当对字符串进行修改的时候,特别是字符串对象经常改变的情况下,需要使用 StringBuffer 和 StringBuilder 类。

StringBuffer 和 StringBuilder主要区分是在线程安全和执行速度上。StringBuffer线程安全但速度慢,StringBuilder非线程安全但速度快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值