☰ 总览更新 10-12 22:33

01 · 编译和运行

我当时的原话

为什么分两步

跨平台

同一份 Hello.java
  │ javac:在哪台电脑编都一样
  ▼
Hello.class(字节码,各平台完全相同,Mac 编的能拷到 Windows 直接跑)
  ├─ Windows 版 JVM → Windows 指令
  └─ Mac 版 JVM     → Mac 指令
  ▼
结果一样

不同的只有 JVM;装 JDK 时选系统,JVM 就在里面。

真跑过(java复习/T1.java)

int[] a = {1, 2, 3};
System.out.println(a[3]);

题

题 我答 结果
a[3] 编译错还是运行错 编译(因为下标只到 2) ❌ 是运行。下标只到 2 看对了,但编译器不数数组长度
int x = "abc"; 编译,因为 abc 不是 int ✅

一句话

编译管「写得对不对」,运行管「跑起来对不对」;编译过 ≠ 运行不出错。