Java 深入理解 instanceof
【摘要】
instanceof 是 Java 中的一个二元操作符,它的作用是测试左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
不适用的元素
由于 instanceof 是用来判断类实例的...
instanceof 是 Java 中的一个二元操作符,它的作用是测试左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
不适用的元素
由于 instanceof 是用来判断类实例的,因此 Java 中的八种基本数据类型就不能使用该关键字了
八种基本类型分别是
- byte
- short
- int
- long
- float
- double
- boolean
- char
基本类型的包装类型
整数默认是 Integer 类型;带小数的默认是 Double 类型
Object obj1 = 1; // Integer
Object obj2 = 1.0; // Double
Object obj3 = 1l; // Long
Object obj4 = 1.0f; // Float
Assert.assertTrue(obj1 instanceof Integer); // 通过
Assert.assertTrue(obj2 instanceof Double); // 通过
Assert.assertTrue(obj3 instanceof Long); // 通过
Assert.assertTrue(obj4 instanceof Float); // 通过
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
数组 Array
任意类的数组,是一种新的类型,而非原类型
Integer[] array = new Integer[]{1,2,3};
Assert.assertTrue(array instanceof Integer); // 报错
Assert.assertTrue(array instanceof Integer[]); // 通过
- 1
- 2
- 3
集合 Collection
对于泛型集合,instanceof 只能帮我们判断主体类型是否正确,而无法校验内部具体的泛型类型是否合适
List<Integer> list = new ArrayList<>();
Assert.assertTrue(list instanceof List); // 通过
Assert.assertTrue(list instanceof ArrayList); // 通过
- 1
- 2
- 3
Object
Object 是所有类的基类。因此所有非空对象 instanceof Object,都为 true
实际上,将任意类赋给它的基类,并不会让该对象有任何损失,该对象依旧是初始化它时的类型
Object obj1 = 1;
Assert.assertTrue(obj1 instanceof Integer); // 通过
Assert.assertTrue(obj1 instanceof Object); // 通过
Object obj2 = "str";
Assert.assertTrue(obj1 instanceof String); // 通过
Assert.assertTrue(obj1 instanceof Object); // 通过
- 1
- 2
- 3
- 4
- 5
- 6
- 7
值为空的实例
如果对象为初始化,也就是值为空。
null instanceof Object
合法,但值为 false,意思是 null 不是任意类的实例
String str = null;
Assert.assertTrue(str instanceof String); // 报错
Assert.assertTrue(str instanceof Object); // 报错
- 1
- 2
- 3
文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/chy555chy/article/details/104024804
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)