我对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
感谢提前。
答案 0 :(得分:8)
instanceof
运算符不测试变量的声明类型;它测试变量引用的对象类(如果有的话)。但是,s
和str
在您的代码中都是null
,null
永远不是任何类的实例。如果您将s
和/或str
设置为实际字符串,则输出会相应更改。
答案 1 :(得分:1)
instanceof运算符将对象与指定类型进行比较。您可以使用它来测试对象是否是类的实例,子类的实例或实现特定接口的类的实例。
检查创建类的新实例
String str = new String();