Java equals方法 - 没有运算符,没有操作数 - if(equals(null))

时间:2013-10-17 15:49:32

标签: equals

我在Eclipse专家发布的Eclipse网站上发现了一些代码:

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

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

这是什么类型的 java 代码?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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参数相同;否则为false。。”

在您的示例代码中,obj不是this对象,而是null。因此,if子句的计算结果为false,因此正在执行的虚拟机将不会评估System.out.println("b");