instanceof和数据类型转换
instanceof
instanceof是Java中的二元运算符,
左边是对象,右边是类;
当对象是 右边类或子类或间接子类所创建对象时,返回true;否则,返回false。
两类之间存在父子关系则instanceof会true,否则flase
代码:
//Teacher和Student继承Person
//Object>String
//Object>Person>Teacher
//Object>Person>Studnet
Object object = new Student();
System.out.println(object instanceof Student);//true
System.out.println(object instanceof Person);//true
System.out.println(object instanceof Object);//true
System.out.println(object instanceof Teacher);//false
System.out.println(object instanceof String);//false
System.out.println("=======================");
Person person = new Student();
System.out.println(person instanceof Student);//true
System.out.println(person instanceof Person);//true
System.out.println(person instanceof Object);//true
System.out.println(person instanceof Teacher);//false
// System.out.println(person instanceof String);//编译错误
System.out.println("=======================");
Student student = new Student();
System.out.println(student instanceof Student);//true
System.out.println(student instanceof Person);//true
System.out.println(student instanceof Object);//true
// System.out.println(student instanceof Teacher);//编译错误
// System.out.println(student instanceof String);//编译错误
- 存在条件:父类引用指向子类的对象(反之不成立)
- 子类转换为父类:向上转型不需要强制转换,instanceof也会true
- 父类转换为子类:需要强制转换
数据类型转换
1.基本数据类型转换:
byte,short,char<int <long<float<double
由低到高自动转换byte—>double 自动
由高到低强制转换double—>byte 强制
2.引用数据类型
子类<父类
student<person<object
由低到高,自动转换student---->object 自动
由高到低,强制转换object---->student 强制
子类转父类,自动动转换,但会丢失子类的方法。
更详细的了解可以访问
csdn博客