==是否检查布尔值是否完全相等?-Java
这取决于您是在谈论
Booleans(对象包装,请注意大写
B)还是
booleans(原始,请注意小写
b)。如果您在谈论
Booleans(对象包装器),就像处理所有对象一样,请
==检查
身份 ,而不是对 等 。如果您在谈论
booleans(基元),它将检查是否相等。
所以:
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。
它不是真正的“与”:
==将 仅
检查两个
String变量是否引用同一
String实例。当然,一个
String实例只能有一组内容,所以如果两个变量指向同一个实例,自然的内容是相同的…
:-)关键的一点是,
==将报告
false为 不同的
String情况下,即使他们有相同字符,顺序相同。这就是为什么我们不使用
equals它们
==。由于
interning(特定于字符串),字符串可能会有点混乱(没有等效的
Boolean,尽管使用时
Boolean.valueOf(boolean)会得到一个缓存的对象)。还要注意,Java没有像原始语言那样的原始字符串
boolean,
int等等。



