如果这是重复的,我会很乐意将其删除,但我找不到它。
为什么第二次比较返回 false?谢谢。
$ cat test.java
class test {
public static void main(String[] args) {
Integer num1 = new Integer(0);
Integer num2 = new Integer(0);
num1 = 1;
num2 = 1;
if (num1 == num2) {
System.out.println("Numbers are equal");
}
num1 = 128;
num2 = 128;
if (num1 == num2) {
System.out.println("Numbers are equal using == ");
}
if (num1.equals(num2)) {
System.out.println("Numbers are equal using .equals");
}
}
}
$ javac test.java
$ java test
Numbers are equal
Numbers are equal using .equals
最佳答案
在 Java 中,整数
应使用 equals()
进行比较,因为它们是对象类型,而不是基元类型。第一个示例之所以有效,是因为 Java 创建了一个介于 -128 和 127 之间的 Integers
池(尽管可以配置此范围),以及它们之间的所有身份比较(使用 ==
)会起作用,因为数字是从池中检索的。每次都会创建更大的数字,并且身份比较对它们不起作用 - 这就是为什么为了安全起见,对象之间的所有相等比较都必须使用 equals()
进行,这将始终工作。正如您刚才所看到的,使用 ==
有时会起作用,但并非总是起作用。
关于java - java 奇数整数比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206471/