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

字符串类在Java中是不可变的。如果您将字典的含义定义为不可变,则表示它无法随时间更改或更改,因此String在Java中不可更改或不可修改。
让’用示例来理解。

如您所见,str1的值没有改变。它创建了另一个具有值的String对象“Hellojava2blog”但没有更改String str1

这解释了String本质上是不可变的。

现在让’理解在java中使字符串不可变的潜在原因是什么

字符串池:

如果仅使用双引号为String赋值,则将其存储在称为字符串文字池的区域中,并且一个字符串可以被许多引用变量引用,并且如果String是可变的,那么它将影响所有引用变量。

线程安全:

默认情况下,不可变对象是线程安全的,所以您不要’无需对其进行同步,并且String实例可以在多个线程之间安全地共享。

安全性:

如果String不可更改,则可能会导致多个安全问题。
例如,在连接数据库时,您以字符串形式提供用户名,密码,端口和主机名等。如果字符串是可变的,则任何黑客都可以更改参考值并对应用程序造成安全威胁。

缓存哈希值:

在HashMap或HashSet或任何其他集合中将String用作键时,可以对其进行缓存’的哈希值。由于String本质上是不可变的,因此您不必’每次都需要计算,因为它将是恒定的。它大大提高了此基于哈希的集合的性能。

类加载:

字符串用作类加载机制。它作为参数传递。如果String是可变的,则将构成安全威胁,因为任何黑客都可能对其进行了更改。

相关文章

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。