为什么Java字符串String是不可变的?
4.5 String为什么不可变
String 可能是 Java 中使用频率最高的引用类型了,因此 String 类的设计者可以说是用心良苦。
比如说 String 的不可变性。
- String 类被 final 关键字修饰,所以它不会有子类,这就意味着没有子类可以重写它的方法,改变它的行为。
- String 类的数据存储在
char[]数组中,而这个数组也被 final 关键字修饰了,这就表示 String 对象是没法被修改的,只要初始化一次,值就确定了。
public final class String
implements java.io.Serializable, Comparable, CharSequence {
/** The value is used for character storage. */
private final char value[];
}
“哥,为什么要这样设计呢?”三妹有些不解。
“我先简单来说下,三妹,能懂最好,不能懂后面再细说。”
第一,可以保证 String 对象的安全性,避免被篡改,毕竟像密码这种隐私信息一般就是用字符串存储的。
以下是一个简单的 Java 示例,演示了字符串的不可变性如何有助于保证 String 对象的安全性。在本例中,我们创建了一个简单的 User 类,该类使用 String 类型的字段存储用户名和密码。同时,我们使用一个静态方法 getUserCredentials 从外部获取用户凭据。
class User {
private String username;
private String password;
public User(String username, String password) {
this.username = userna...
回复