- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 .java 文件的编译顺序感到困惑。编译从哪里开始?文件顶部? (或)来自包含 main 的类? (或)公开课?
--- * File Sample1.java *---
class A
{
public static void main(String args[])
{
String str[] = {""};
System.out.println("hi");
B.main(str);
}
}
class B
{
public static void main(String args[])
{
System.out.println("hello");
}
}
我编译“Sample1.java”的假设:
1)代码从顶部开始执行。所以先编译 A 类,然后编译 B 类。
那么我如何考虑下面的代码编译?
--- * File Sample2.java *---
class A extends class B
{
int a;
}
class B
{
int b;
}
除此之外我还有一个问题:
编译器为 A
创建一个默认构造函数,其中调用了它的父类(super class)构造函数(class B
),所以这个调用是由编译器放置的还是 JVM 尝试在运行时调用它。
最佳答案
编译从文件的顶部开始,但会经历几个阶段。当编译器第一次读取类时,它只检查它是否可以解析语法,并从中构建一个内部树。在稍后阶段,它将尝试解析符号,然后检查它们是否存在。
您的示例(语法更正 - 您不能说“extends class B”):
class A extends B {
int a;
}
class B {
int b;
}
工作正常,因为编译器在第一阶段不需要知道类 B
是否存在,当它正在读取类 A
的文本时。在后面的阶段,当编译器试图从 class A extends B
中解析符号 B
时,它查找 B
并且因为它已经读取类 B
的文本,它会找到它并正确编译代码。
关于java - 编译从哪里开始?文件顶部? (或)来自包含 main 的类? (或)公开课?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294702/
如果有人能为我的作业指明这段代码的正确方向,我将非常感激。 我已经粘贴了需要完成的整个代码,但我需要以下方法的帮助 public void changeColour(Circle aCircle) 该
我对 .java 文件的编译顺序感到困惑。编译从哪里开始?文件顶部? (或)来自包含 main 的类? (或)公开课? --- * File Sample1.java *--- class A {
我正在做一个测试项目来了解对象的 XML 序列化,但我遇到了一个奇怪的运行时错误: namespace SerializeTest { public partial class Form1 : For
广告在模拟器上完美显示,但我仍然在设备预览中看到此错误。此错误会阻止带有渲染问题的预览。我已经尝试了 SO 中的所有内容,但没有任何效果。这是我的 .java: import com.google.a
我是一名优秀的程序员,十分优秀!