Blu*_*ire 25 java boolean equals-operator
所以我听说如果我将2个字符串与==进行比较,那么只有当它们都引用相同的对象/实例时我才会得到回报.这是字符串.布尔人怎么样?
T.J*_*der 43
==检查布尔值是否完全相等? - 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
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它们的原因,而不是==.字符串因为interning而变得有点混乱,这是特定于字符串的(没有相应的Boolean,但是当你使用时Boolean.valueOf(boolean),你将得到一个缓存的对象).还要注意的是Java没有原始的字符串像它原始的boolean,int等等.