为什么 Java 中的 String 类不可变或 final?
不可变的字符串表示我们不能修改对象本身,但我们可以修改对该对象的引用。字符串设为 final 以防止其他人对其进行扩展并破坏其不变性。
安全性参数通常表示为网络连接、数据库连接 URL、用户名/密码等中的字符串。如果它可变,则这些参数可以轻松修改。
同步和并发使得字符串无法更改,自动使其线程安全,从而解决了同步问题。
高速缓存当编译器优化我们的 String 对象时,假设两个对象具有相同的值(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());
}
}
输出
The hascode of st1 = -594386763 The hascode of st2 = 77292912 The Hashcode after st1 is changed : 962735579
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP