目录

类型转换

总结


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和类型转换相关推荐

  1. 【Java基础笔记】类型转换

    目录 前言 类型转换(基本数据类型) 1.自动类型转换 2.强制类型转换 前言 该文章为Java基础自学笔记 其他内容:Java基础学习笔记目录 学习用书: <Java核心技术 卷Ⅰ 基础知识( ...

  2. java基础---instanceof关键字

    package com.henu;/** instanceof用于判断一个对象是否一个类(或接口)的实例,返回值boolean* 也就是说instanceof能准确判断出对象是否某个类的实例* ins ...

  3. JAVA基础——时间Date类型转换

    在java中有六大时间类,分别是: 1.java.util包下的Date类, 2.java.sql包下的Date类, 3.java.text包下的DateFormat类,(抽象类) 4.java.te ...

  4. string转short java_[Java基础]之 数据类型转换

    数据类型转换存在的意义 数据类型转换,在实际的应用开发中,常常会对不同类型的数字类型进行计算,所以就用到了数据转换.一方面,使用算术计算符对数字进行运算时,系统在适当的时候回进行自动转换:另一放方面, ...

  5. Java基础知识记忆(面试准备)

    Java知识记忆 Java技术体系 JDK IDEA Java基础语法 Java基础语法 1.类型转换问题 自动类型转换 表达式的自动类型转换 强制类型转换 2.运算符 2.1 算术运算符(理解) 2 ...

  6. 【狂神说Java笔记】Java基础

    Java基础01:注释 关闭 idea 后再次打开,默认打开上一次关闭时的项目 新建空项目 File --> New --> Project... Empty Project --> ...

  7. Java 面向对象:instanceof和类型转换的理解

    Java 面向对象:instanceof和类型转换的理解 一.instanceof 1.定义: instanceof A 判断一个引用所指向的对象,是否是A类型,或者A的子类 instanceof 的 ...

  8. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。

    java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...

  9. Java基础教程,第三讲,运算符 变量定义 数据类型转换

    2019独角兽企业重金招聘Python工程师标准>>> 学完此次课程,我能做什么? 学完此次课程我们可以学会Java的运算符,以及数据类型的自动转换和强制转换. 学习此次课程,需要多 ...

  10. Java基础篇:如何使用instanceof

    有时,在运行时间内知道对象类型是很有用的.例如,你有一个执行线程生成各种类型的对象,其他线程处理这些对象. 这种情况下,让处理线程在接受对象时知道每一个对象的类型是大有裨益的.另一种在运行时间内知道对 ...

最新文章

  1. 对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)
  2. 在IDEA中`New`没有`Mapper`文件选项(亲测)
  3. 线段树POJ3468(成段更新,区间求和)
  4. vuex的结构有哪些参数?
  5. (1)HTML5概述
  6. 程序员面试金典——1.7清除行列
  7. LINUX使用sed修改文件,如果包含变量,需要使用双引号
  8. 05-用两个栈实现一个队列
  9. java 面试高频问题 java8新特性
  10. 广东地区经纬度Python版
  11. 基于c++的电子宠物
  12. 网络信息安全-U盘病毒编写
  13. FTP客户端(利用sun.net.ftp.FtpClient实现)
  14. python之文件处理
  15. 安卓蓝牙打印机无法打印问题
  16. 一文读懂机器学习需要哪些数学知识
  17. 艾瑞泽5无损换挡机构
  18. SPI控制MS5614T
  19. 智能卡 ISO14443 协议 解读
  20. python catia harness_介绍一些CATIA汽车线束设计模块的常用命令

热门文章

  1. OpenCV--圆检测
  2. 链表使用基础——如何创建链表
  3. 关于逆向思维在程序设计中的应用
  4. 报错解决 | Arduino nano v3.0(atmega328p)烧录失败
  5. 蓝桥杯 - [2013年第四届真题]买不到的数目(数论|动态规划)
  6. 博弈论——《取石子》《取石子游戏》
  7. C#上传视频生成缩略图
  8. 事项ON丰宁坝上草原
  9. 这3个好用的同声传译app,让你知道有什么同声传译软件推荐
  10. 6名亲友包庇杀妻男子获刑