下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

浅谈String/StringBuffer/StringBuilder字符串的拼接

作者:课课家教育     来源: http://www.kokojia.com点击数:1622发布时间: 2017-09-03 08:30:04

标签: web开发字符串Java

Web开发

  java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在我们来看一下它们各自的内容:

  一、String类型的拼接

  java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在我们来看一下它们各自的内容:    一、String类型的拼接

  String的concat方法只会返回拼接括号内数据后的字符串,但是这个String类型的本身并不受影响。

 String的concat方法只会返回拼接括号内数据后的字符串,但是这个String类型的本身并不受影响。

  这里的拼接符不能所在的表达式不能单独存在,必须有赋值操作。

  二、StringBuffer类型的拼接

 这里的拼接符不能所在的表达式不能单独存在,必须有赋值操作。    二、StringBuffer类型的拼接

  可以看到,只要运用的append或insert方法,那么StringBuffer本身的值就会改变,而不用重新赋值。

  三、StringBuilder类型的拼接

 可以看到,只要运用的append或insert方法,那么StringBuffer本身的值就会改变,而不用重新赋值。    三、StringBuilder类型的拼接

  StringBuilder比StringBuffer运行速度要快,因为StringBuilder是针对于单线程的,所这它是非线程安全的。普通情况下建议使用StringBuilder。

  使用场景

  使用String类的场景:在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。

  使用StringBuffer类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。

  使用StringBuilder类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder,如SQL语句的拼装、JSON封装等。

  对于三者使用的总结:

  1.如果要操作少量的数据用=String

  2.单线程操作字符串缓冲区下操作大量数据=StringBuilder

  3.多线程操作字符串缓冲区下操作大量数据=StringBuffer

  假如我们用StringBuffer/StringBuilder对字符串进行拼接,有时我们会犯哪些错误呢?下面小编给大家看一个错误案例:

  错误案例

  在循环中大量使用字符串连接,会导致不必要的内存消耗和频繁的垃圾回收。

  错误分析

  错误的写法:

错误分析    错误的写法:

  能用"+"或"+="操作符来拼接大量字符串,在大量字符串拼接操作时,直接相加两个String对象,会为新创建的字符串分配内存,原有的两个String对象也没有释放掉,从而消耗大量的内存资源。

  在我们这种高访问量的网站中,一些微小的问题也可能被无限放大,成为严重影响系统性能的瓶颈。

  正确用法

能用"+"或"+="操作符来拼接大量字符串,在大量字符串拼接操作时,直接相加两个String对象,会为新创建的字符串分配内存,原有的两个String对象也没有释放掉,从而消耗大量的内存资源。    在我们这种高访问量的网站中,一些微小的问题也可能被无限放大,成为严重影响系统性能的瓶颈。    正确用法

  测试关注点

  通过持续的压力测试,看内存占用的增长情况

  小编结语:

  更多内容尽在课课家教育!

赞(22)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程