参考答案
不可变。
在Java中String被设计为不可变的原因,总结原因如下:
原因一:
- 在Java程序中String类型是使用最多的,涉及大量的增删改查。
- 在每次增删改查之前,jvm需要检查这个String对象的安全性,就是通过hashcode,设计成不可变对象,以保证每次增删改查的hashcode的唯一性。
原因二:
- 通常情况下,网络连接地址URL、文件路径path都是以String类型保存的,如果String不是固定不变的,将引起各种安全隐患。
- 例如,密码不能以String的类型保存,如果将密码以明文的形式保存成字符串,那么它将一直留在内存中,直到垃圾收集器把它清除。但是,字符串是被放在字符串缓冲池中的,可以方便重复使用,它可能在内存中被保留很长时间,这将导致安全隐患。
原因三:
- 字符串值是被保留在常量池中的。即:如果字符串对象允许改变,将导致各种逻辑错误。
以上,是Java面试题【 String是可变的吗,为什么?】的参考答案。
附图文源码详解版,想深入了解可以打开这篇看看:String 字符串为什么是不可变的?
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—