面试连环炮系列(二十三): StringBuffer与StringBuild的区别

  1. StringBuffer与StringBuild的区别
    频繁修改字符串时,建议使用StringBuffer和StringBuilder类。StringBuilder相较于StringBuffer有速度优势,要求线程安全的情况下,必须使用StringBuffer类。

  2. 为什么拼接String不推荐用加号
    String的值是不可变的,每次对String的操作都会生成新的String对象,不仅效率低下,而且消耗大量内存空间。

  3. 为什么String是不可变的

    1. String类内部所有的字段都是final修饰的。
    2. String类内部所有的字段都是私有的。
    3. String类不能够被继承和扩展。
  4. 有什么办法能够改变String
    可以通过反射来改变String

  5. String设计成不可变有什么好处

    1. 安全需要:在JDK中Java的类装载机制通过传递的参数(通常是类名)加载类,这些类名在类路径下。假设String是可变的,攻击者可能通过自定义类装载机制损害应用。
    2. 性能需要:不可变对象才可以创建常量池,提高JVM性能。
    3. 线程安全:当多线程访问时,不可变对象是线程安全的。

参考(部分摘抄的文字版权属于原作者):

https://blog.csdn.net/u011702479/article/details/82262823
https://www.cnblogs.com/wuchanming/p/9201103.html

posted @   编码专家  阅读(1225)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示