Blu*_*ire 25 java boolean equals-operator
所以我听说如果我将2个字符串与==进行比较,那么只有当它们都引用相同的对象/实例时我才会得到回报.这是字符串.布尔人怎么样?
T.J*_*der 43
==检查布尔值是否完全相等? - Java
这取决于你是在谈论Boolean
s(对象包装器,注意大写B
)还是boolean
s(原语,注意小写b
).如果您正在谈论Boolean
s(对象包装器),就像所有对象一样,==
检查身份,而不是等效.如果你在谈论boolean
s(原语),它会检查等价性.
所以:
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
Run Code Online (Sandbox Code Playgroud)
但
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
Run Code Online (Sandbox Code Playgroud)
关于字符串:
我听说如果我将2个字符串与==进行比较,那么如果字符串相同并且它们都引用相同的对象/实例,我将只返回...
这不是一个真正的"和":==
将只检查两者是否String
变量指向同一个String
实例.当然,一个String
实例只能有一组内容,所以如果两个变量指向同一个实例,自然的内容是相同的... :-)关键的一点是,==
将报告false
为不同的 String
情况下,即使他们有相同的字符以相同的顺序排列.这就是我们使用equals
它们的原因,而不是==
.字符串因为intern
ing而变得有点混乱,这是特定于字符串的(没有相应的Boolean
,但是当你使用时Boolean.valueOf(boolean)
,你将得到一个缓存的对象).还要注意的是Java没有原始的字符串像它原始的boolean
,int
等等.