Boolean 比较相等
在Java中,Boolean类提供了多种方法来比较布尔值:equals()和booleanValue()等。
equals() 判断相等
当且仅当参数不是null,而是一个与此对象一样,都表示同一个Boolean值的boolean对象时,才返回true。
✍方法声明
public boolean equals(Object obj)
- 📥入参:obj为要比较的对象。
- 🪐返回值:当且仅当参数不是null,而是一个与此对象一样,都表示同一个Boolean值的boolean对象时,才返回true,其他情况返回 false。
public static void main(String[] args) {
Boolean bool1 = Boolean.TRUE;
Boolean bool2 = new Boolean(true);
Boolean bool3 = new Boolean("false");
boolean res1 = bool1.equals(bool2);
System.out.println(res1);
boolean res2 = bool2.equals(bool3);
System.out.println(res2);
System.out.println(bool1 == bool2);
System.out.println(bool1.equals(null));
System.out.println(bool3.equals(null));
}
具有相同Boolean 值的 bool1 与 bool2 通过 equals() 方法比较的,两者表示不同的对象,因此 ==
结果不相等。
true
false
false
false
false
false
false
false
false
booleanValue()方法 获取boolean值
booleanValue()方法返回封装在Boolean对象中的原始boolean值。使用此方法可以直接获取布尔值。
✍方法声明
public boolean booleanValue();
- 🪐返回值:转换为boolean类型后该对象表示的数值。
public static void main(String[] args) {
Boolean bool = Boolean.TRUE;
boolean b = bool.booleanValue();
Boolean bool2 = new Boolean("true");
boolean c = bool2.booleanValue();
System.out.println(b == c);
}
true
compareTo() 比较布尔值
将此Boolean实例与其他实例进行比较。Boolean类并没有实现compareTo()方法。在Java中,Comparable接口的compareTo()方法通常用于比较对象的自然顺序,而Boolean类并没有定义这样的顺序。一般,开发中使用Boolean类提供的booleanValue()方法来获取布尔值,而不是通过compareTo()方法进行比较。
✍方法声明
public int compareTo(Boolean b)
- 📥入参:b为要进行比较的Boolean实例。
- 🪐返回值:如果对象与参数表示的布尔值相同,则返回零;如果此对象表示true,参数表示false,则返回一个正值:如果此对象表示false,参数表示true,则返回一个负值。
- 🐛抛出异常NullPointerExceptio:如果参数为null。
下面代码将创建3个Boolean对象,应用compareToO方法进行比较,将比较结果赋给int型变量并输出结果。
public static void main(String[] args) {
Boolean bool = new Boolean(true);
Boolean bool2 = new Boolean(false);
Boolean bool3 = Boolean.TRUE;
int res1 = bool.compareTo(bool2);
int res2 = bool2.compareTo(bool3);
int res3 = bool.compareTo(bool3);
System.out.println(res1);
System.out.println(res2);
System.out.println(res3);
int i = bool2.compareTo(null);
}
1
-1
0
Exception in thread “main” java.lang.NullPointerException
-1
0
Exception in thread “main” java.lang.NullPointerException
📝总结
在Java中比较Boolean对象时,应该根据比较的目的选择正确的方法:
- 如果你想要比较两个Boolean对象是否表示相同的布尔值,应该使用equals()方法。
- 如果你需要获取Boolean对象的原始boolean值进行比较,应该使用booleanValue()方法。
- 避免使用
==
操作符来比较Boolean对象的值,除非你确信你在比较的是原始boolean值而不是对象引用。
通过使用这些方法,我们可以准确地比较布尔值,并避免由于对象引用或字符串表示的混淆而导致的错误。