何时使用比较运算符是安全的,例如==,> =,<在Java中使用Integer对象而不是原始的int?
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
我知道==对于引用是危险的,你应该使用.equals,但其他运算符呢? e.g。
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?
是否可以使用除双等于以外的任何东西(So&gt;,&lt;,&gt; =和&lt; =安全吗?),还是应该使用.compareTo()方法?
答案 0 :(得分:5)
变量引用null
时很危险。取消装箱操作将导致NullPointerException
。
<=
和>=
运算符与==
不同。 They can only be applied to numerical primitive types (and values),因此参考平等不是问题。
答案 1 :(得分:1)
< > <= >=
一切正常,它们将取消装箱到int
。 ==
或!=
,除了检查操作数是否为空。他们会进行参考比较,而不是值比较 - 所以你可能想要使用equals
方法。< > <= >=
不安全 - 他们可以提供NullPointerException
。答案 2 :(得分:0)
运营商可以使用灵长类动物。 方法(例如.equals()或.equalsIgnoreCase()) 用于对象。