-
汪汪一只猫
JVM维护了一个叫方法区的内存区域。方法区里保存了所用到的类型信息,如该类的全限定名,直接父类的全限定名,指向classloader的指针,指向Class对象的指针等等。所有在堆上创建的对象都有一个指回方法区的指针,该指针指向了该对象的实际类型信息。执行instanceof的时候,JVM就是通过查找方法区中的类型信息来获得结果的。在做类型转换时,JVM同样需要检查类型信息,以判断该转换是否合法
-
白衣染霜花
Java虚拟机把内存主要划分成 方法区、栈、堆等,类型信息是在class文件读入的时候就被放到方法区了的。你说的检查类型,分为两种情况:1)基本类型。JVM内部的基本类型和Java语言的基本类型大部分是一致的,因此编译时检查和转换就完成了。2)引用类型。不仅要编译时检查,而且在运行时会对对象持有的方法区的指针从方法区中查看类型是否一致,检查时还会根据对象方法区中的超类型或接口类型的指针进行判断,保证可以转换为其超类型。
-
慕哥9229398
毫无疑问,对象信息肯定在堆内存啊栈内存知识存储了对象的一个句柄可以先用instanceof关键字判断对象是否是你准备转换的类型,然后再向下转换,比较安全