为什么 String 是不可变的

1 为什么 String 是不可变的

查看源码,发现 String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[],所以 String 对象是不可变的。

2 这样设计的好处

  1. 可以视为常量,这样 Java Runtime 可以节省大量的 Java 堆空间,因为不同的 String 变量可以在 String Pool 中引用相同的 String 对象;
  2. 保障安全性。对于密码等敏感信息,用 String 对象表示,在方法调用的过程中肯定不会被修改;
  3. 线程安全,一个 String 实例可以在不同的线程中共享,不需要使用同步机制;
  4. 它的 hashcode 在创建时就被缓存了,一旦生成绝不改变,不需要再次计算。(因此 HashMap 常用 String 作为 key)

 

ref:

站长数十年成长感悟,输入暗号查看

桩白墨公众号上还能加入书舟书友群、美团外卖红包群,免费领取站桩和原创 chatgpt 教程哦
暗号:
请关注本站微信公众号,回复“暗号”,即可获取。在微信里搜索“桩白墨”或者“baimoz”或者微信扫描右侧二维码都可以关注站长微信公众号。