引用到的类:
 class Person{
String name;
}
class Student extends Person{
String sut_no;
}
class ClassMate extends Student{ }
总结:使用instanceOf的时候注意 左边运行时类型是右边或其子类的类型(右边的实例) 返回true
    左边的编译类型必须是右边类型或其父类类型 (否则编译失败)
强制转换时并不是所有的父类都可以强转子类(编译都可以通过)只有满足父类的运行时类型是该类或该子类方可
public static void main(String[] args) throws Exception {
String str = "test";
System.out.println(str instanceof Object); //true
Long number = new Long(123);
System.out.println(number instanceof Object); //true //System.out.println(number instanceof String); 编译通不过
Person p = new Person();
Student s = new Student();
System.out.println(s instanceof Person); //true Person stu = new Student();
System.out.println(stu instanceof Person); //true
System.out.println(stu instanceof Student); //true
System.out.println(stu instanceof ClassMate); //false // java.lang.ClassCastException: Person cannot be cast to Student
// 将父类强制转换为子类需要注意
// 如果该父类的运行时类型是该类 或该子类 则可以
// 否则会出现 ClassCastException
// Person person = new Person();
// Student student = (Student) person; Person person2 = new ClassMate();
Student student2 = (Student)person2; System.out.println(student2 instanceof Person); //true
System.out.println(student2 instanceof Student); //true
//总结:使用instanceOf的时候右边类是 左边对象的运行时类型或者是运行时类型父类的时候返回true;
//强制转换时并不是所有的父类都可以强转子类(编译都可以通过)只有满足父类的运行时类型是该类或该子类方可
}

2、引用变量的强制类型转换

  引用类型之间的转换只能把一个父类变量转换成子类类型,如果两个没有任何继承关系的类型,则无法进行

  类型转换,否则编译时就会报错。如果试图将一个父类转换成子类,那么父类对象的运行时类型必须是子类

  的实例才行,否则在运行时引发ClassCastException;

3、所谓创建A类的实例:就是说这个实例是A类或其子类的对象 instanceOf的作用就是判断 左边对象运行时类型到底是不是 右边的实例 若是 返回true 否则false

引用变量的类型强转以及InstanceOf方法的使用的更多相关文章

  1. Java引用变量的类型

    Java引用变量的类型 1.编译时类型:由声明该变量时使用的类型决定 2.运行时类型:由实际赋给该变量的对象决定    如果编译时类型和运行时类型不一致,就可能出现多态性

  2. Java中isAssignableFrom()方法与instanceof()方法用法

    一句话总结: isAssignableFrom()方法是从类继承的角度去判断,instanceof()方法是从实例继承的角度去判断. isAssignableFrom()方法是判断是否为某个类的父类, ...

  3. instanceof运算符与引用变量的强制类型转换

    一.instanceof运算符 instanceof是Java语言中的一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例,即它左边的对象是否是它右边 ...

  4. null值可以赋给引用变量,不能给基本类型

    下面正确的写法是? cbyte i=128 boolean i=null long i=0xfffL double i=0.9239d null表示没有地址:null可以赋值给引用变量,不能将null ...

  5. 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...

  6. [转]深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)

    以下内容转自: 作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-l ...

  7. JS 中对变量类型的五种判断方法

    5种基本数据类型:undefined.null.boolean.unmber.string 复杂数据类型:object. object:array.function.date等 方法一:使用typeo ...

  8. block 对外部引用变量的处理

    MRC 环境 一.静态变量 和 全局变量   在加和不加  __block 都会直接引用变量地址.也就意味着 可以修改变量的值.在没有加__block 参数的情况下. 全局block 和 栈block ...

  9. JS面试题-<变量和类型>-JavaScript的数据类型

    前言 整理以前的面试题,发现问js数据类型的频率挺高的,回忆当初自己的答案,就是简简单单的把几个类型名称罗列了出来,便没有了任何下文.其实这一个知识点下可以牵涉发散出很多的知识点,如果一个面试者只是罗 ...

随机推荐

  1. BZOJ——3412: [Usaco2009 Dec]Music Notes乐谱

    http://www.lydsy.com/JudgeOnline/problem.php?id=3412 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit:  ...

  2. Codeforces Round #490 (Div. 3)

    感觉现在\(div3\)的题目也不错啊? 或许是我变辣鸡了吧....... 代码戳这里 A. Mishka and Contes 从两边去掉所有\(≤k\)的数,统计剩余个数即可 B. Reversi ...

  3. 洛谷2085最小函数值(minval) + 洛谷1631序列合并

    题目描述 有n个函数,分别为F1,F2,-,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). ...

  4. ajax简单案例

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  5. Linux命令大总结

    from http://elain.blog.51cto.com/3339379/623310 Linux命令大总结------------------------------------------ ...

  6. 【报错】项目启动,仅仅报错 One or more listeners failed to start. Full details will be found in the appropriate container log file

    今天spring4.3.13 项目,整合ActiveMQ的时候,项目启动在自动部署到tomcat下的时候,不能正常的部署,仅仅报错如下: Connected to server [-- ::,] Ar ...

  7. 2016.7.14 generator基于注解和基于xml自动生成代码的区别

    1.generator配置文件generatorConfig.xml的区别 2.生成代码的区别 注:二者的实体类都一样. (1)基于XML 生成的文件有: 后面省略. 也就是说,基于xml的方式,是要 ...

  8. project修改时间日历

    视图→甘特图 格式→时间表→右键时间表  详细的日程表,然后双击时间即可

  9. 我如何添加一个空目录到Git仓库?

    新建了一个仓库,只是创建一些目录结构,还不里面放什么,要放的内容还没有,还不存在,应该怎么办呢? Git 是不跟踪空目录的,所以需要跟踪那么就需要添加文件! 也就是说 Git 中不存在真正意义上的空目 ...

  10. 我的IT成长史,不以物喜,不以己悲

    http://bbs.51cto.com/thread-1066048-1.html本人87年,出生在北方一座3线城市,从小学就喜欢计算机,带着鞋套去机房练习打英文字母:初中顺理成章的通过了计算机1级 ...