Java基础:instanceof和类型转换
目录
类型转换
总结
instanceof (类型转换) 引用类型,判断一个对象是什么类型
万能公式:System.out.println(X instanceof Y);
能不能编译通过!取决于X和Y是否是父子关系,X和Y是否有关系,有关系但不是父子关系,编译通过,但是会输出False
Application测试类
package com.demo1.demo09;import com.demo1.demo09.demo9.Person;
import com.demo1.demo09.demo9.Student;
import com.demo1.demo09.demo9.Teacher;public class Application {public static void main(String[] args) {//三条继承路线//Object > String//Object > Person > Teacher//Object > Person > StudentObject object = new Student();System.out.println(object instanceof Student);//trueSystem.out.println(object instanceof Person);//trueSystem.out.println(object instanceof Object);//trueSystem.out.println(object instanceof Teacher);//false//同级但不同线,但Object和Teacher是有关系的,才不会直接报错而是打印FalseSystem.out.println(object instanceof String);//false//不同路线,且Object和String(是在java包里面的)是有关系的,才不会直接报错而是打印FalseSystem.out.println("分界线===========================================================");Person person = new Student();System.out.println(person instanceof Student);//trueSystem.out.println(person instanceof Person);//trueSystem.out.println(person instanceof Object);//trueSystem.out.println(person instanceof Teacher);//False// System.out.println(person instanceof String);//编译直接报错 直接就是不同路线且是同级的
//代码的运行分为编译和运行两步,编译的时候只看类型,所以是先去看的instanceof两边的数据类型是否有父子关系System.out.println("分界线=============================================================");Student student = new Student();System.out.println(student instanceof Student);//trueSystem.out.println(student instanceof Person);//trueSystem.out.println(student instanceof Object);//true//System.out.println(student instanceof Teacher);//编译直接报错 同级不同路线// System.out.println(student instanceof String);//编译直接报错 直接就是不同路线}
}
类型转换
Person类
public class Person {public void run(){System.out.println("run");}}
Student类
public class Student extends Person{public void go(){System.out.println("go");}
}
父类无法直接调用子类中的方法,会报红,需要进行类型转换
类型转换 高转低
public class Application {public static void main(String[] args) {//类型之间的转换: 父 子//高 转 低Person obj = new Student();//将这个对象(obj)转换为Student类型,我们就可以使用Student类型的方法了Student student = (Student)obj;student.go();//((Student)obj).go(); 代码缩写}
}
类型转换 低转高
public class Application {public static void main(String[] args) {//子类转换为父类,可能丢失自己本来的一些方法//低转高 不用强制转换Student s1 = new Student();student.go();Person person=s1;//父类引用指向子类对象((Student) person).go();//按刚刚来说,是可以不用强转就可以用go方法的,也说明了子类转换为父类,可能丢失自己的本来一些方法}
}
总结
1.父类引用指向子类对象(前提) 2.把子类转换为父类,向上转型,不用强制转换 3.把父类转换为子类,向下转型,强制转换,可能会丢失方法 4.方便方法的调用,减少重复的代码 简洁抽象: 封装 继承 多态
Java基础:instanceof和类型转换相关推荐
- 【Java基础笔记】类型转换
目录 前言 类型转换(基本数据类型) 1.自动类型转换 2.强制类型转换 前言 该文章为Java基础自学笔记 其他内容:Java基础学习笔记目录 学习用书: <Java核心技术 卷Ⅰ 基础知识( ...
- java基础---instanceof关键字
package com.henu;/** instanceof用于判断一个对象是否一个类(或接口)的实例,返回值boolean* 也就是说instanceof能准确判断出对象是否某个类的实例* ins ...
- JAVA基础——时间Date类型转换
在java中有六大时间类,分别是: 1.java.util包下的Date类, 2.java.sql包下的Date类, 3.java.text包下的DateFormat类,(抽象类) 4.java.te ...
- string转short java_[Java基础]之 数据类型转换
数据类型转换存在的意义 数据类型转换,在实际的应用开发中,常常会对不同类型的数字类型进行计算,所以就用到了数据转换.一方面,使用算术计算符对数字进行运算时,系统在适当的时候回进行自动转换:另一放方面, ...
- Java基础知识记忆(面试准备)
Java知识记忆 Java技术体系 JDK IDEA Java基础语法 Java基础语法 1.类型转换问题 自动类型转换 表达式的自动类型转换 强制类型转换 2.运算符 2.1 算术运算符(理解) 2 ...
- 【狂神说Java笔记】Java基础
Java基础01:注释 关闭 idea 后再次打开,默认打开上一次关闭时的项目 新建空项目 File --> New --> Project... Empty Project --> ...
- Java 面向对象:instanceof和类型转换的理解
Java 面向对象:instanceof和类型转换的理解 一.instanceof 1.定义: instanceof A 判断一个引用所指向的对象,是否是A类型,或者A的子类 instanceof 的 ...
- java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。
java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...
- Java基础教程,第三讲,运算符 变量定义 数据类型转换
2019独角兽企业重金招聘Python工程师标准>>> 学完此次课程,我能做什么? 学完此次课程我们可以学会Java的运算符,以及数据类型的自动转换和强制转换. 学习此次课程,需要多 ...
- Java基础篇:如何使用instanceof
有时,在运行时间内知道对象类型是很有用的.例如,你有一个执行线程生成各种类型的对象,其他线程处理这些对象. 这种情况下,让处理线程在接受对象时知道每一个对象的类型是大有裨益的.另一种在运行时间内知道对 ...
最新文章
- 对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)
- 在IDEA中`New`没有`Mapper`文件选项(亲测)
- 线段树POJ3468(成段更新,区间求和)
- vuex的结构有哪些参数?
- (1)HTML5概述
- 程序员面试金典——1.7清除行列
- LINUX使用sed修改文件,如果包含变量,需要使用双引号
- 05-用两个栈实现一个队列
- java 面试高频问题 java8新特性
- 广东地区经纬度Python版
- 基于c++的电子宠物
- 网络信息安全-U盘病毒编写
- FTP客户端(利用sun.net.ftp.FtpClient实现)
- python之文件处理
- 安卓蓝牙打印机无法打印问题
- 一文读懂机器学习需要哪些数学知识
- 艾瑞泽5无损换挡机构
- SPI控制MS5614T
- 智能卡 ISO14443 协议 解读
- python catia harness_介绍一些CATIA汽车线束设计模块的常用命令