虚拟机一个小问题

当虚拟机遇到一条含有new的指令时,会进行一系列对象创建的操作:
(1)检查常量池中是否有即将要创建的这个对象所属的类的符号引用;

若常量池中没有这个类的符号引用,说明这个类还没有被定义!抛出ClassNotFoundException;若常量池中有这个类的符号引用,则进行下一步工作;

(2)进而检查这个符号引用所代表的类是否已经被JVM加载;

若该类还没有被加载,就找该类的class文件,并加载进方法区;若该类已经被JVM加载,则准备为对象分配内存;


其中第一步,这个类没有被定义,怎么可以new出来,编译时都通不过好吗;
或者说你找不到类的符号引用,怎么就说明类还没被定义,我不能是没有被虚拟机加载进来吗?
有没有大佬可以解释一下



全部评论
import xxxx可能是javac编译器做语法分析或者验证用的。
点赞 回复 分享
发布于 2020-02-17 23:09
1.new指令执行时若发现符号引用指向的类未被加载,则会触发类加载操作。若类加载失败则会抛出ClassNotFountException异常。
点赞 回复 分享
发布于 2020-02-17 23:08
编译后把class文件删除了呢,随便说说
点赞 回复 分享
发布于 2020-02-17 22:41

相关推荐

喜欢飞来飞去的雪碧在刷代码:可以试一试字节
点赞 评论 收藏
分享
AAA不喝拿铁:西电本硕学历没问题,但是项目名字首先得改虽然一眼能看出来是点评但是不能演都不演就直接给面试官端上去。技术点全是redis显得这像redis的课程实验,也要改。我根据真实面经整理得到的最全(高/中/低频)面试题,需要的牛u可以订阅一手我的专栏,祝好运
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务