【发布时间】:2011-12-29 17:53:48
【问题描述】:
让我们首先考虑 Java 中的以下表达式。
Integer temp = new Integer(1);
System.out.println(temp.equals(1));
if(temp.equals(1))
{
System.out.println("The if block executed.");
}
所有这些语句都可以正常工作。毫无疑问。表达式 temp.equals(1) 按预期计算为 true,因此会执行 if 块中的唯一语句。
现在,当我将数据类型从 Integer 更改为 Long 时,语句 temp1.equals(1) 意外地计算为 false,如下所示。
Long temp1 = new Long(1);
System.out.println(temp1.equals(1));
if(temp1.equals(1))
{
System.out.println("The if block executed.");
}
这些语句与前面的 sn-p 中提到的语句等效,只是数据类型已更改并且它们的行为完全相反。
表达式temp1.equals(1) 被计算为false,因此,if 块中的唯一语句不执行,这与前面的语句相反。怎么样?
【问题讨论】:
-
文档说
.equals只有当两个对象都是long类型时才返回 true。 -
我试过
if(temp1.longValue()==1)和if(temp1.equals(1l)都按预期工作。
标签: java