java - 与 String 和实例混淆

标签 java scjp

我对 instanceof 感到困惑。我的理解是 instanceof 是检查对象类型。字符串是对象,但在下面的程序中显示不匹配。请解释一下。

public class MyTest
{
    static String s;
    public static void main(String args[])
    {
        String str = null;

        if(s instanceof String)
        {
            System.out.println("I am true String");
        }
        else 
        {
            System.out.println("I am false String");
        }
        if(str instanceof String)
        {
            System.out.println("I am true String");
        }
        else 
        {
            System.out.println("I am false String");
        }
    }    
}


The output is 

I am false String
I am false String

提前致谢。

最佳答案

instanceof 运算符不测试变量的声明类型;它测试变量引用的对象(如果有)的类。但是,sstr 在您的代码中都是 null 并且 null 永远不是任何类的实例。如果您将 s 和/或 str 设置为实际字符串,则输出将相应地更改。

关于java - 与 String 和实例混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22241798/

相关文章:

java - SCJP 模拟题 : How many objects are eligible for garbage collection?

java - Java 标识符中的 "connecting characters"是什么?

java - 方法创建的字符串对象

java - 为什么这个 SCJP 程序给出输出 21 但我得到 20?

java - Hibernate 不允许带有 int 字段的嵌入对象为空?

java - Java 字节码有通用解析器吗?

java - 双数据类型在 java 中未返回所需的输出

java - 如何使用 Java 中的 Google Drive API 库强制从 Google Team Drive 下载文件

java - 从外部源定义 JPA 配置

java - 了解加入()