Java Stringクラスequals()メソッドの実装


1、ソースを貼って、とりあえず自分で読む
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;
    }

2、釈放
NO 1、参照値が等しいか否かを判断し、等しい、すなわちtはrueを返し、下へ行かなくてもよい.
NO 2、タイプが一致しているかどうかを判断し、タイプが同じで、長さが等しいかどうかを判断し、1つの比較文字が同じで、完全に一致しているかどうかを判断すると、tureを返し、間違っているとfalseを返す.
説明:2つのオブジェクトが等価である場合、必ず同じタイプであることを前提とします.
NO 3、タイプが一致せずfalseを返します.
3、コードスタイルを変えて、論理を簡略化する
    public boolean equals(Object anObject) {

        if (this == anObject) {
            return true;
        }

        if (!(anObject instanceof String)) {
            return false;
        }


        String anotherString = (String) anObject;
        int n = value.length;
        if (n != anotherString.value.length) {
            return false;

        }

        char v1[] = value;
        char v2[] = anotherString.value;
        int i = 0;
        while (n-- != 0) {
            if (v1[i] != v2[i])
                return false;
            i++;
        }

        return true;
    }

簡単に説明する
1、引用が異なり、等しくない;
2、タイプが违って、等しくありません;
3、長さが等しくなく、等しくない.
4、文字が等しくなくて、等しくありません;
5、すべての不一致を排除する、すなわち等しい.