Java – null instanceof Object计算结果为true和false

当我编译和运行这个代码:

public class Testing { public static void main(String... args) { Object obj = null; if (obj instanceof Object) { System.out.println("returned true"); } else { System.out.println("returned false"); } System.out.println(" " + obj instanceof Object); } } 

我在命令行上得到这个:

 C:\Users\xxxxxx\Desktop>java Testing returned false true 

不应该“null instanceof someType”总是返回false?

这个:

 " " + obj instanceof Object 

被评估为:

 (" " + obj ) instanceof Object 

" " + obj确实是一个非null的string,它是Object一个实例。

在最后一个System.out.println" " + obj先评估,然后结果,这是一个String被检查为instanceof Object和结果打印。

在(“”+ obj)中是首先被评估的部分,所以在括号之后它不再为空。 所以这是Object的实例。

另请参阅下面的链接,以便您的概念清晰。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html