1

我在 Eclipse 大师发布的 Eclipse 站点上找到了一些代码:

String something = null ;       
if (equals(null)) {
    System.out.println("b'");
} 

它编译。但它似乎没有运行。

这是什么java代码?

4

2 回答 2

1

equals()Object是在类中声明的普通方法。

与您的类或基类中的任何其他方法一样,您可以this使用操作数调用它。
equals()相当于this.equals()

调用equals(null)永远不会返回 true,因为您不能在null实例上调用方法。

于 2013-10-17T15:52:50.953 回答
0

它确实运行,但可能并不明显!试试下面的代码:

if (equals(null)) {
    System.out.println("b");
} 
else {
    System.out.println("c");
}

使用此代码,您应该会看到标准输出上的字母c


equals(Object obj)是在Object类中声明的方法。

equals(someObject)相当于this.equals(someObject)

equals(obj)的 API 契约是:

"true如果this对象与obj参数相同;否则为假。."

在您的示例代码中,objis not thisobject but null。因此,if子句评估为false,因此正在执行的虚拟机不会评估System.out.println("b");

于 2013-10-17T17:08:19.523 回答