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

时间:2012-09-06 09:03:35

标签: java instanceof

编译并运行此代码时:

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?

3 个答案:

答案 0 :(得分:103)

此:

" " + obj instanceof Object

评估为:

(" " + obj ) instanceof Object

" " + obj确实是一个非空字符串,它是Object的一个实例。

答案 1 :(得分:2)

在上一个System.out.println中," " + obj首先进行评估,并检查String的{​​{1}}结果,并打印结果。

答案 2 :(得分:2)

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

另请参阅以下链接,以便明确您的概念。

  

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