因此,我听说如果将2个字符串与==进行比较,则只有它们都引用相同的对象/实例时,我才会返回true。那是琴弦。布尔呢?
==是否检查布尔值是否完全相等?-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
但
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
它们==
。由于intern
ing(特定于字符串),字符串可能会有点混乱(没有等效的Boolean
,尽管使用时Boolean.valueOf(boolean)
会得到一个缓存的对象)。还要注意,Java没有像原始语言那样的原始字符串boolean
,int
等等。
我需要一个可以在junit 方法中调用的方法,该方法比较两个布尔值以检查它们是否相等,并返回一个布尔值。例如,类似这样的事情: 如果不相等,则返回false,如果相等,则返回true。我已经检查了布尔类,但是唯一接近的是< code>Boolean.compare(),它返回一个int值,我不能使用这个值。
问题内容: 如何检查布尔值是否为null?因此,如果我知道“ hideInNav”为空。如何阻止它进一步执行?像下面这样的东西似乎不起作用,但是为什么呢? 问题答案: 只能是或因为它是原始数据类型(+ 变量的默认值为)。如果要使用值,则可以改用类。布尔是一种引用类型,这就是您可以分配给布尔“变量”的原因。例:
问题内容: 比较两个浮点值以实现完全相等的一种优雅,易读且不冗长的方法是什么? 听起来很简单,但这是一个严重的问题。该运营商没有得到楠所做的工作,也有特殊待遇的零: 但我想,以确定是否两个值是完全一样的(但我 不 关心不同的NaN模式,所以任何的NaN ==任何其他男- >真)。 我 可以 使用这段丑陋的Monster代码 来 做到这一点: 有没有更好的方法来编写此代码(并使意图显而易见)? 问题
我有一个Java类,下面是一个示例:
问题内容: 以下代码 使用V1.7.0_15 编译时没有错误,并且在运行时显示“ false”。但是,Eclipse Juno抱怨“操作数类型对象和布尔值不兼容”。 显然,javac自动装箱原始boolean ,然后通过对象相等(yielding)进行比较和自动装箱,而Eclipse拒绝执行自动装箱。 根据Java语言规范,哪种行为正确?我应该在哪里提交错误? 注意: 如果将的类型更改为,则事情将
问题内容: 我正在搜索一个给定值的切片: 在普通情况下,类型为。但是,例如,如果类型是一些自定义的,该怎么办? 问题答案: 感谢@CodingPickle评论,我提供了Go编程语言规范中的以下内容 等号运算符==和!=适用于可比较的操作数。 关于s和: 接口值是可比较的。如果两个接口值具有相同的动态类型和相等的动态值,或者两个接口值都为nil,则它们相等。 当类型X的值可比较并且X实现T时,非接口