据我了解,如果我有两个long
或int
,则由于自动装箱,有时无法使用==
运算符测试值的相等性。
在处理原语时,我需要做些什么来确保==
在所有可能的情况下都能工作?
最佳答案
向后兼容性要求(JLS同意),如果您有类似
double a = ..
double b = ...
if (a == b) // condition
此条件的工作方式必须与自动装箱之前和自动装箱之后相同。这意味着自动装箱不能并且不能在此处应用。
实际上,如果自动装箱可以使用拆箱代替,则永远不会使用它来编译==表达式。
Integer i = 1000;
int j = 1000;
System.out.println(i == j); // is true
在这种情况下,选择装箱而不是装箱。
关于java - 如何确保==将始终与原语一起用作相等性测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19686792/