Java学习笔记(二十一):类型转换和instanceof关键字

基本数据类型转换

自动类型转换:把大类型的数据赋值给大类型的变量(此时的大小指的是容量的范围)

1 byte b = 12;  //byte是一个字节
2 int  i = b;   //int是四个字节

强制类型转换:把大类型的数据赋值给小类型的变量

1 short s  = (short) i ;i是int类型四个字节,s是short类型二个字节

引用类型转换:

引用类型的大和小,指的是父类和子类的关系

自动类型转换:把子类对象赋值给父类变量(多态)

1 Animal a = new Dog();

强制类型转换:把父类类型对象赋给子类对象

1 Animal a = new Dog();
2 Dog d = (Dog)a;

instanceof运算符:

判断某对象是否是某一个类的实例

1 boolean b = 对象A instanceof 类B; //判断A对象是否是B类的实例,如果是,返回true

例子1:

 1 public void feed(Animal a)
 2 {
 3     a.eat();
 4     if(a instanceof Dog) //如果动物a是Dog类对象
 5     {
 6         Dog d = (Dog) a;//将动物a强转为Dog类
 7         d.watch();   //执行Dog类的看家方法
 8     }            
 9     else if (a instanceof Cat) //如果动物a是Cat类对象
10     {
11          Cat c = (Cat)a; //将动物a强转为Cat类
12          c.catchMouse(); //执行Cat类的抓老鼠方法
13     }  
14 }    

例子2:

1 Object obj = "ABC";  //多态,把String对象赋给Object类型
2 System.out.println(obj instanceof Object);  //true
3 System.out.println(obj instanceof Object);  //true
4 System.out.println(obj.getClass()); //获取对象的真实类型
5 System.out.println(obj.getClass() == String.class);//true
6 System.out.println(obj.getClass() == Object.class);//false

运行输出:

:

原文地址:https://www.cnblogs.com/zylq-blog/p/7753227.html