【问题标题】:Safety of comparison operators with Integer objects in JavaJava中整数对象比较运算符的安全性
【发布时间】:2014-12-27 05:01:50
【问题描述】:

什么时候使用比较运算符是安全的,例如==, >=,

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?

是否可以使用除双等号以外的任何内容(所以 >、= 和

【问题讨论】:

    标签: java reference integer comparison-operators


    【解决方案1】:

    当变量引用null 时很危险。拆箱操作将导致NullPointerException

    &lt;=&gt;= 运算符不同于 ==They can only be applied to numerical primitive types (and values),所以引用相等不是问题。

    【讨论】:

      【解决方案2】:
      • 如果您知道这些值不为空,那么&lt; &gt; &lt;= &gt;= 一切正常,它们将拆箱到int
      • 您可能不想使用==!=,除了检查操作数是否为空。他们将进行参考比较,而不是值比较 - 因此您可能希望改用 equals 方法。
      • 如果其中一个值可能为 null,则 &lt; &gt; &lt;= &gt;= 不安全 - 他们可以提供 NullPointerException

      【讨论】:

        【解决方案3】:

        操作员可以使用基本类型。 方法(例如 .equals() 或 .equalsIgnoreCase()) 用于对象。

        【讨论】:

        • 没什么。使用 .equalsIgnoreCase() 我在考虑字符串。谢谢你的收获。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多