我在Eclipse专家发布的Eclipse网站上发现了一些代码:
String something = null ;
if (equals(null)) {
System.out.println("b'");
}
它编译。但它似乎没有运行。
这是什么类型的 java 代码?
答案 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");
。