web-dev-qa-db-ja.com

==と文字を比較できますか?

文字列の場合、==は参照のみを比較するため、比較には等号を使用する必要があります。

==とcharsを比較すると、期待される結果が得られますか?


私はstackoverflowで同様の質問を見てきました、例えば.

ただし、charsで==を使用することを尋ねるメッセージを見たことはありません。

6
abinmorth

はい、charは他のプリミティブ型とまったく同じで、==で比較できます。

Charを数値と直接比較して、計算で使用することもできます。例:

public class Test {
    public static void main(String[] args) {
        System.out.println((int) 'a'); // cast char to int
        System.out.println('a' == 97); // char is automatically promoted to int
        System.out.println('a' + 1); // char is automatically promoted to int
        System.out.println((char) 98); // cast int to char
    }
}

印刷されます:

97
true
98
b
10

はい、でもありません。

技術的には、==は2つのintsを比較します。したがって、次のようなコードで:

public static void main(String[] args) {
    char a = 'c';
    char b = 'd';
    if (a == b) {
        System.out.println("wtf?");
    }
}

Javaは、行a == b(int) a == (int) bに暗黙的に変換しています。

ただし、比較は依然として「機能」します。

2
Pod