【发布时间】:2013-03-20 20:45:41
【问题描述】:
在比较 Long、Integer 等原始包装类时为什么不使用 ==。为什么它们不起作用。
public static void main(String[] args) {
Number l = Integer.parseInt("30");
Number l2 = Integer.parseInt("30");
System.out.println(l == l2);
l = Integer.parseInt("3000");
l2 = Integer.parseInt("3000");
System.out.println(l == l2);
}
为什么在上面的代码中一个结果为真而另一个为假???
【问题讨论】:
-
Number是什么类?我可以编写一个任意的“数字”类,并让 == 以任何我想要的方式工作,即使它是荒谬的。 -
@RobertHarvey:Here's the spec for
Number。您可以拥有任何类型的Number对象,它可以是任何一种数字原始包装器。