一、前言
1.1、instanceof 1.2、 1.3、
二、instanceof 的说明、解释
2.1、
说明:
2.2、
double obj = 1;
if (obj instanceof Double)
System.out.println("true"); //无输出-->不成立
String obj = 1.0 + "";
if (obj instanceof Double)
System.out.println("true"); //无输出:
if(null instanceof Object)
System.out.println("true");
else
System.out.println("false");
//输出:false
String obj = null;
if (obj instanceof Object){
System.out.println("true");
else
System.out.println("false");
//输出:false
String obj = null;
if (obj instanceof null)
System.out.println("true");
else
System.out.println("false");
2.2.5_demo05_ :前方高能,务必仔细阅读!!!
class Student {}
public class Test {
public static void main(String[] args){
//第1组
System.out.println(new Student() instanceof String); //编译时错误
System.out.println(new Student() instanceof Exception); //编译时错误
System.out.println(new Student() instanceof Object); //输出时true
//第2组
System.out.println(new Student() instanceof List); //输出false
System.out.println(new Student() instanceof List<?>); //输出false
System.out.println(new Student() instanceof List<String>); //编译错误
System.out.println(new Student() instanceof List<Object>); //编译错误
//第3组
System.out.println(new String() instanceof List); //编译错误
System.out.println(new String() instanceof List<?>); //编译错误
//第4组
System.out.println(null instanceof Object); //输出错误,同demo03
}
}
分析:
疑惑 1 :为什么用student()测试String时编译报错,测试List的时编译通过
疑惑 2 :Student已经确定类型了啊,List类型也是确定的啊,为什么能够编译通过呢,而String却不行呢?``
String、Integer、Long
等都是 最终类
,他们的处理类似于编译器对常量的处理,故而可以通过编译 final
关键字的时候,其表现就跟 String、Integer、Long
这些最终类测试instanceof表现的一样了。 三、instanceof 的用法
result = object instanceof class
参数:
result object class
四、综述