面试连环炮系列(二十三): StringBuffer与StringBuild的区别
-
StringBuffer与StringBuild的区别
频繁修改字符串时,建议使用StringBuffer和StringBuilder类。StringBuilder相较于StringBuffer有速度优势,要求线程安全的情况下,必须使用StringBuffer类。 -
为什么拼接String不推荐用加号
String的值是不可变的,每次对String的操作都会生成新的String对象,不仅效率低下,而且消耗大量内存空间。 -
为什么String是不可变的
- String类内部所有的字段都是final修饰的。
- String类内部所有的字段都是私有的。
- String类不能够被继承和扩展。
-
有什么办法能够改变String
可以通过反射来改变String -
String设计成不可变有什么好处
- 安全需要:在JDK中Java的类装载机制通过传递的参数(通常是类名)加载类,这些类名在类路径下。假设String是可变的,攻击者可能通过自定义类装载机制损害应用。
- 性能需要:不可变对象才可以创建常量池,提高JVM性能。
- 线程安全:当多线程访问时,不可变对象是线程安全的。
参考(部分摘抄的文字版权属于原作者):
https://blog.csdn.net/u011702479/article/details/82262823
https://www.cnblogs.com/wuchanming/p/9201103.html
博客作者:编码专家
公 众 号:编码专家
独立博客:codingbrick.com
文章出处:https://www.cnblogs.com/xiaoyangjia/p/11833857.html
本文版权归作者所有,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。
公 众 号:编码专家
独立博客:codingbrick.com
文章出处:https://www.cnblogs.com/xiaoyangjia/p/11833857.html
本文版权归作者所有,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)