したがって、2 つの文字列を == で比較すると、両方が同じオブジェクト/インスタンスを参照している場合にのみ true が返されると聞いたことがあります。それが弦です。ブール値はどうですか?
4 に答える
== はブール値の完全な等価性をチェックしますか? - ジャワ
Boolean
s (オブジェクト ラッパー、大文字に注意B
) またはboolean
s (プリミティブ、小文字に注意)について話しているかによって異なりますb
。Boolean
s (オブジェクト ラッパー)について話している場合、すべてのオブジェクトと同様に、 equivalenceではなくidentity==
をチェックします。s (プリミティブ)について話している場合は、等価性がチェックされます。boolean
そう:
Boolean a, b;
a = new Boolean(false);
b = new Boolean(false);
System.out.println("a == b? " + (a == b)); // "a == b? false", because they're not the same instance
しかし
boolean c, d;
c = false;
d = false;
System.out.println("c == d? " + (c == d)); // "c == d? true", because they're primitives with the same value
文字列について:
2 つの文字列を == で比較すると、文字列が同一で、両方が同じオブジェクト/インスタンスを参照している場合にのみ true が返されると聞いたことがあります...
実際には「and」ではありません==
。2つの変数が同じインスタンスを参照しているかどうかのみをチェックします。もちろん、1 つのインスタンスは 1 セットのコンテンツしか持てないため、両方の変数が同じインスタンスを指している場合、当然、コンテンツは同じです... :-) 重要な点は、たとえそれらが同じ文字を同じ順序で。そのため、 ではなくを使用します。文字列に固有のingのため、文字列は少し混乱する可能性があります ( に相当するものはありませんが、 を使用すると、キャッシュされたオブジェクトが取得されます)。また、Java にはプリミティブのようなプリミティブ文字列がないことに注意してください。String
String
String
==
false
String
equals
==
intern
Boolean
Boolean.valueOf(boolean)
boolean
、int
など
オブジェクトが equals を使用している場合は、そうでない場合は、このようなもので実行できます。(オートボクシング プリミティブの VM キャッシュ)
public static void main(String[] args){
Boolean a = true;
Boolean b = true;
System.out.println(a == b);
a = new Boolean(true);
b = new Boolean(true);
System.out.println(a == b);
}
出力はTRUEおよびFALSEです
int
、のような値型について話しているかboolean
、long
参照型についてInteger
話しているかBoolean
によって異なりますLong
。値型は と比較できますが==
、参照型は と比較する必要がありますequals
。