【发布时间】:2021-03-12 12:30:14
【问题描述】:
我们在关于 java 代码执行的测试中遇到了这个问题:-
选择正确的java代码执行顺序
a) 类加载器
b) 解释
c) 编译
d) 字节码验证
e) Java 源代码
f) 执行
选项:-
- e-a-c-b-d-f
- e-a-b-c-d-f
- e-b-a-c-b-f
- e-c-a-d-b-f
我将选项 4 标记为我的选择。我不知道确切的原因,但对我来说那个听起来最好。
结果,它说我的答案是错误的。 T_T
谁能说出正确答案是什么以及为什么。
(大学声称的正确答案是选项 3) (在给出这篇文章的链接后,大学更正了选项 4 的解决方案)
(看了大家的cmets和解决方案,对执行过程有了更深入的了解,而不是仅仅解决一个愚蠢的错误MCQ...... GREAT COMMUNITY)。
【问题讨论】:
-
那么你可能会质疑测试的有效性。类加载器(运行时)和解释(JVM 对已编译文件执行的操作)都在编译后发生。在编译之前发生的任何思想链都是错误的。再说一次,类加载器(运行时)在解释之后,所以,事实上,4 对我来说似乎也不正确。
-
正确答案是 4,因为您从源代码 (E) 开始,然后将其编译 (C) 为字节码。由于 A(类加载器)和 B(解释)都适用于字节码,所以不能在 C 之前有 A 或 B,所以它不能是其他选项。其他人可能会将编译与 JIT 混淆。
-
我很想听到[所谓的]“正确”答案,这样我们都可以无情地嘲笑它(;->)
-
@Stultuske 4 是正确的。源代码 -> 编译为字节码 -> 加载到内存(类加载器) -> 验证加载的代码 -> 此时就变得模糊了,因为解释代码是执行它的一种方式,所以 B 和 F 真的是一样的事情。
-
真的吗?正确答案是说“解释”发生了两次,而“字节码验证”根本没有发生?还是你抄答案的时候出错了?