为什么String字符串在 Java 中是不可变的

字符串在 Java 中是不可变的,因为字符串对象缓存在字符串池中。由于缓存的字符串文字在多个客户端之间共享,因此始终存在风险,即一个客户端的操作会影响所有其他客户端。例如,如果一个客户端将字符串“Test”的值更改为“TEST”,则所有其他客户端也将看到该值,如第一个示例中所述。由于 String 对象的缓存出于性能原因很重要,因此通过使 String 类不可变来避免这种风险。

同时,String 是 final的,因此没有人可以通过扩展和覆盖行为来破坏 String 类的不变性,如 Immutability、Caching、hashcode 计算等。String 类不可变的另一个原因 可能是由于 HashMap。

由于字符串作为 HashMap 键非常流行,因此它们必须是不可变的,这样它们才能检索存储在 HashMap 中的值对象。由于HashMap 的工作原理是 hashing,这需要相同的 value 才能正常运行。如果在插入后修改了 String 的内容,则 Mutable String 将在插入和检索时产生两个不同的哈希码,可能会丢失映射中的值对象。

如果您是印度板球迷,您也许可以与我的下一句话相关联。该字符串是Java的VVS Laxman,即非常非常特殊的类。我还没有见过一个不使用 String 编写的 Java 程序。这就是为什么对 String 有扎实的理解对于 Java 开发人员来说非常重要的原因。

String 作为数据类型、传输对象和中介的重要和流行也使其在 Java 面试中很流行。为什么 String 在 Java 中是不可变的是 Java中最常见的字符串面试问题之一,首先讨论什么是 String,Java 中的 String 与 C 和 C++ 中的 String 有何不同,然后转向什么是Java中的不可变对象,不可变对象有什么好处,为什么要使用它们以及应该在哪些场景中使用它们。这个问题有时也被问到,“为什么 String 在 Java 中是最终的”。

为什么String字符串在 Java 中是不可变的

发表评论

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