发布时间:2024-12-16 16:01
x instanceof A:检验x是否为类A的对象,返回值为boolean类型,如果是,返回true;如果不是,返回false。
⭕ 要求x所属的类与类A必须是子类和父类的关系,否则编译错误
⭕ 如果x属于类A的子类B,x instanceof A值也为true
public class Person extends Object {…} public class Student extends Person {…} public class Graduate extends Person {…} ------------------------------------------------------------------- public void method1(Person e) { if (e instanceof Person) {// 处理Person类及其子类对象} if (e instanceof Student) {//处理Student类及其子类对象} if (e instanceof Graduate){//处理Graduate类及其子类对象} }
⭕ 自动类型转换:小的数据类型可以自动转换成大的数据类型。
如:long g=20; double d=12.0f;
⭕ 强制类型转换:可以把大的数据类型强制转换(casting)成小的数据类型。
如:float f=(float)12.0; int a=(int)1200L;
⭕ 为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型。如果返回false,不进行向下转型。
⭕ 从子类到父类的类型转换可以自动进行 。
⭕ 从父类到子类的类型转换必须通过造型(强制类型转换)实现 。
⭕ 无继承关系的引用类型间的转换是非法的。
⭕ 如果 a instanceof A返回true,则 a instanceof B也返回true, 其中,类B是类A的父类。
public class ConversionTest { public static void main(String[] args) { double d = 13.4; long l = (long) d; System.out.println(l);//13 int in = 5; // boolean b = (boolean)in; Object obj = \"Hello\"; String objStr = (String) obj; System.out.println(objStr);//Hello Object objPri = new Integer(5); // 所以下面代码运行时引发ClassCastException异常 String str = (String) objPri; /* Exception in thread \"main\" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String */ } }
class Person { String name; int age; int id = 1001; public void eat(){ System.out.println(\"人:吃饭\"); } public void walk(){ System.out.println(\"人:走路\"); } } class Man extends Person{ boolean isSmoking; int id = 1002; public void earnMoney(){ System.out.println(\"男人负责挣钱养家\"); } public void eat(){ System.out.println(\"男人多吃肉,长肌肉\"); } public void walk(){ System.out.println(\"男人霸气的走路\"); } } class Woman extends Person{ boolean isBeauty; public void goShopping(){ System.out.println(\"女人喜欢购物\"); } public void eat(){ System.out.println(\"女人少吃,为了减肥\"); } public void walk(){ System.out.println(\"女人窈窕的走路\"); } } public class PersonTest { public static void main(String[] args) { //问题一:编译时通过,运行时不通过 //举例一: // Person p3 = new Woman(); // Man m3 = (Man)p3; //举例二: // Person p4 = new Person(); // Man m4 = (Man)p4; //问题二:编译通过,运行时也通过 // Object obj = new Woman(); // Person p = (Person)obj; //问题三:编译不通过 // Man m5 = new Woman(); // String str = new Date(); // Object o = new Date(); // String str1 = (String)o; } }
到此这篇关于Java深入讲解instanceof关键字的使用的文章就介绍到这了,更多相关Java instanceof内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
Python 「面向对象基本语法」(验证是否是对象的方法dir()、定义类、示例)
C# ABB机器人上位机控制 .net PC SDK开发全流程(通信、控制、日志、二次开发)--Chapter 1
HTML5+CSS3+Bootstrap开发静态页面嵌入android webview中
【面试:并发篇16:多线程:wait/notify详解】原理及错误用法(虚假唤醒等)
【深度理解】语义分割中常用的评价指标含义GA、OA、mAcc、IoU、mIoU
Python项目实战(一)《Python编程 从入门到实践》
微服务SpringCloud开弓之Zookeeper服务注册与发现《四》
鸿蒙HarmonyOS 3官宣:7月27日正式发布;苹果2023年放缓部分团队招聘和支出;俄罗斯对谷歌重罚26亿元|极客头条