String 不可变性的一些好处(string为什么不可变的好处)

让我们看看 String 不可变性的一些好处,这将有助于理解为什么 String 在 Java 中是不可变的。

  1. 字符串池是可能的,因为 String 在 Java 中是不可变的。这样 Java Runtime 节省了很多堆空间,因为不同的 String 变量可以引用池中的同一个 String 变量。如果 String 不是不可变的,那么 String interning 就不可能,因为如果有任何变量改变了值,它也会反映在其他变量中。
  2. 如果 String 不是不可变的,那么它将对应用程序造成严重的安全威胁。例如,数据库用户名、密码作为字符串传递以获取数据库连接和套接字编程中,主机和端口详细信息作为字符串传递。由于 String 是不可变的,因此它的值不能更改,否则任何黑客都可能更改引用的值,从而导致应用程序出现安全问题。
  3. 由于 String 是不可变的,因此对于多线程是安全的。单个 String 实例可以在不同的线程之间共享。这避免了使用同步来保证线程安全。字符串是隐式线程安全的。
  4. 字符串在java 类加载器中使用,不变性提供了正确的类被 Classloader 加载的安全性。例如,考虑一个实例,您尝试加载java.sql.Connection类但引用的值更改为myhacked.Connection可以对数据库执行不需要的操作的类。
  5. 由于String是不可变的,它的hashcode在创建的时候就被缓存了,不需要重新计算。这使它成为 Map 中键的绝佳候选者,并且它的处理速度比其他 HashMap 键对象更快。这就是为什么 String 被最广泛地用作 HashMap 键的原因。

以上是我能想到的一些原因,这些原因显示了字符串不变性的好处。它是Java String 类的一个很棒的特性,使它变得特别。

String 不可变性的一些好处(string为什么不可变的好处)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注