String是可变的吗,为什么

参考答案

不可变。

在Java中String被设计为不可变的原因,总结原因如下:

原因一:

  • 在Java程序中String类型是使用最多的,涉及大量的增删改查。
  • 在每次增删改查之前,jvm需要检查这个String对象的安全性,就是通过hashcode,设计成不可变对象,以保证每次增删改查的hashcode的唯一性。

原因二:

  • 通常情况下,网络连接地址URL、文件路径path都是以String类型保存的,如果String不是固定不变的,将引起各种安全隐患。
  • 例如,密码不能以String的类型保存,如果将密码以明文的形式保存成字符串,那么它将一直留在内存中,直到垃圾收集器把它清除。但是,字符串是被放在字符串缓冲池中的,可以方便重复使用,它可能在内存中被保留很长时间,这将导致安全隐患。

原因三:

  • 字符串值是被保留在常量池中的。即:如果字符串对象允许改变,将导致各种逻辑错误。

 

以上,是Java面试题【 String是可变的吗,为什么?】的参考答案。

附图文源码详解版,想深入了解可以打开这篇看看:String 字符串为什么是不可变的?

 

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧