java中String类为什么要设计成final?

2020-05-26  本文已影响0人  互联网混凝土瞬移师

首先要理解final的用途,final修饰符可以修饰类、方法和变量。

String为什么不可变?

翻开JDK源码,java.lang.String类如下所示:

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    // 用于存储字符串的值
    private final char value[];
    // 缓存字符串的 hash code
    private int hash; // Default to 0
    // ......其他内容
}

所以,【String类被设计成final不可被继承,避免被外部继承破坏结构破坏】 + 【成员char[]被修饰为final不可被修改,同时被private修饰,不对外暴露】,这两部分共同保证了String的不可变。

不可变有什么好处?

上一篇 下一篇

猜你喜欢

热点阅读