51

当我编译并运行这段代码时:

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吗?

4

3 回答 3

102

这:

" " + obj instanceof Object

被评估为:

(" " + obj ) instanceof Object

并且" " + obj确实是一个非空字符串,它是Object.

于 2012-09-06T09:04:42.033 回答
2

在 lastSystem.out.println中,首先计算结果,然后检查" " + obj结果,即 a并打印结果。Stringinstanceof Object

于 2012-09-06T09:06:34.823 回答
2

In (" " + obj) 是首先被评估的部分,因此括号后不再为空。所以它是Object的实例。

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

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

于 2012-09-06T09:13:09.540 回答