[英]Safety of comparison operators with Integer objects in Java
在使用Integer对象而不是原始int的情况下,什么时候可以比较安全地使用比较运算符(例如==,> =,<)?
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
我知道==对于引用很危险,您应该改用.equals,但是其他运算符呢? 例如
int x = 7;
int y = 7;
Integer a = new Integer(7);
Integer b = new Integer(7);
System.out.println(x == y);
System.out.println(a == b);
System.out.println(a.equals(b));
System.out.println(a <= b);
版画
true
false // Why you should use .equals
true
true // Seemed dangerous but it worked?
可以使用除double equals以外的其他方法(所以>,<,> =和<=是安全的吗?),还是应该使用.compareTo()方法?
当变量引用null
时,这很危险。 取消装箱操作将导致NullPointerException
。
<=
和>=
运算符不同于==
。 它们只能应用于数字基本类型(和值) ,因此引用相等性不是问题。
< > <= >=
<=> < > <= >=
都可以,它们将对int
取消装箱。 ==
或!=
。 他们将进行引用比较,而不是值比较-因此您可能想要使用equals
方法。 < > <= >=
是不安全的-它们可以给出NullPointerException
。 运算符对基元没问题。 方法(例如.equals()或.equalsIgnoreCase())用于对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.