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

String类源码_字符串

String类源码_java_02

String类源码_字符串_03

String类源码_字符串_04

String类源码_i++_05

String类源码_java_06

String类源码_字符串_07

https://www.zhihu.com/question/31345592

http://www.ciaoshen.com/


String.equal()方法

对比的是两个字符串的值

在javaJDK中,大部分的equal函数都是先判断对象是不是属于同一类,如果是则比较对象的值是不是相等,如果是则返回相等;在String类中先判断是不是都是String类,再判断数组是不是相等,如果是则返回true;

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}