虚拟机一个小问题

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

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

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

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


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



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

相关推荐

GGrain:没事,本硕985也不发面试笔试😖
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务