为什么 Java 中的 String 类是不可变的或最终的?
javaobject oriented programmingprogramming更新于 2025/7/19 14:04:17
字符串是不可变的,这意味着我们不能改变对象本身,但我们可以改变对该对象的引用。字符串被设置为 final,不允许其他人扩展它并破坏其不变性。
- 安全性参数通常在网络连接、数据库连接 URL、用户名/密码等中表示为字符串。如果它是可变的,这些参数可以轻松更改。
- 同步和并发使字符串不可变会自动使它们线程安全,从而解决同步问题。
- 缓存当编译器优化我们的字符串对象时,似乎如果两个对象具有相同的值(a =" test"和 b =" test"),因此我们只需要一个字符串对象(对于 a 和 b,这两个将指向同一个对象)。
- 类加载字符串用作类加载的参数。如果可变,则可能导致加载错误的类(因为可变对象会改变其状态)。
示例:
public class StringImmutableDemo {
public static void main(String[] args) {
String st1 = "Tutorials";
String st2 = "Point";
System.out.println("The hascode of st1 = " + st1.hashCode());
System.out.println("The hascode of st2 = " + st2.hashCode());
st1 = st1 + st2;
System.out.println("The Hashcode after st1 is changed : "+ st1.hashCode());
}
}
Output:
The hascode of st1 = -594386763 The hascode of st2 = 77292912 The Hashcode after st1 is changed : 962735579
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

