JAVAで2つの文字列オブジェクトを比較する方法

問題

最近書かれた手順2つのStringオブジェクトが等しい比較する必要が発生した場合、私は習慣的に書いたような形をif(a == "a"){}次のように声明、警告のうちIDEAは、読み取ります。

String values are compared using '==', not 'equals()'.

言い換えれば、私はちょうどその文がなければなりません書いてないif(a.equals("a")){}魚、と彼女はもはや赤でマーク。

説明

なぜこれがそうですか?==そしてequals()、それぞれ、どのような影響?

基本データ型のbyte(バイト)、 short短整数)、 int整数)、 longロング)、 float単精度浮動小数点)、 double倍精度浮動小数点)、 booleanブール)、 charキャラクタータイプ)、==比較が全くありません、彼らの価値あるequals()方法で。

以下のためにStringデータ参照のこのタイプ、==アドレス2つのオブジェクトである同じメモリアドレスへの参照の比較は、同じメモリアドレスならば、性質が同じオブジェクト間に何のように同じオブジェクトです。

私たちの一般的なシナリオは、それがイコールの使用()メソッドが必要になり、2つの文字列オブジェクトの内容を比較することが主な理由です。我々は()メソッドに等しいjava.lang.Stringの定義を見ることができ、あなたは)(値はイコールで2つのStringオブジェクトを比較することで見ることができます。

/**
* Compares this string to the specified object.  The result is {@code
* true} if and only if the argument is not {@code null} and is a {@code
* String} object that represents the same sequence of characters as this
* object.
*
* @param  anObject
*         The object to compare this {@code String} against
*
* @return  {@code true} if the given object represents a {@code String}
*          equivalent to this string, {@code false} otherwise
*
* @see  #compareTo(String)
* @see  #equalsIgnoreCase(String)
*/
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;
}

以下のような状況の特殊なケースもある"abcde" == "abcde""abcde" == "abc" + "de"常に返されtrue、両側が直接コンパイラによって実装されているので、それは変数として宣言されていませんが。

概要

あなたは何をしているかを知っていればもちろん、それは==この機能は、もちろん問題はないを使用することです。equalsと他の回は、()メソッドは、することができます。

AMW市I:共有するためのJava開発技術の研究や知識に焦点を当てます!

- - 終わり - -
JAVAで2つの文字列オブジェクトを比較する方法

おすすめ

転載: blog.51cto.com/14409778/2423260