元数据卡
- 前置知识:见过 Hello World 代码结构(ch01-code-explained.md)
- 预计时间:15 分钟
- 完成标志:能说出 Java 四个核心语法规则
代码能跑不能跑,关键看语法。就像自然语言有语法规则("我吃饭"对,"饭吃我"错),编程语言也有自己的规矩。
老陈师傅把一张发黄的羊皮纸铺在桌上——上面写着变量村法典的四条铁律。
规则一:花括号必须配对
public class HelloWorld { // ← 房顶
public static void main(String[] args) { // ← 门框
System.out.println("Hello World!");
} // ← 门框关闭
} // ← 房顶关闭每个 { 必须有一个对应的 }。
老陈拿了两根木棍放在桌上:"一根搭上去,一根收回来。只搭不收,房子塌了。"
// 错误——花括号没配对
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
// 少了一个 } —— class 的领地没关!编译器会报这样的错误:
HelloWorld.java:5: error: reached end of file while parsing
}
^原则: 花括号就像俄罗斯套娃——最晚打开的,最早关闭。
技巧: 每次打 { 后立刻打 },再移光标到中间写代码。
规则二:每条语句以分号结尾
"分号是 Java 的句号。" —— 老陈师傅
Java 里绝大部分"做事"的句子叫"语句"(statement),每条语句末尾都要有一个英文分号 ;。
System.out.println("Hello World!"); // ← 分号结束没有分号,编译器就不知道这句话说完了,它会一直等,然后不耐烦地报错:
HelloWorld.java:3: error: ';' expected
System.out.println("Hello World!")
^但要注意:有些地方不需要分号。花括号后面通常不加分号,类头部、方法头部也没有分号。判断标准很简单——只有在"执行动作"的句子末尾加分号。
⚠️ 中文分号是隐藏炸弹。 英文分号
;和中文分号;长得几乎一样,但编译器只认英文的。写代码时确保输入法在英文模式。
# 中文分号导致的错误
javac HelloWorld.java
# error: illegal character: ';'规则三:Java 区分大小写
"
System不是system。main不是Main。String不是string。"
Java 对大小写非常敏感。HelloWorld 和 helloworld 在 Java 看来是两个完全不同的名字。
// 错误——大小写写错
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // 正确
}
}常见死法:system 报错找不到符号,Main 编译通过但运行找不到方法,String[] Args 不规范但能跑。
怎么避免? 代码编辑器会在代码里把 Java 关键词高亮——颜色不对就说明拼错了。class 会显示为蓝色或紫色,String 会显示为另一种颜色。利用这个视觉提示。
规则四:文件名必须等于 public 类名
这是 Java 区别于很多语言的一个硬性规定。
// HelloWorld.java 文件里
public class HelloWorld { // ← 必须匹配文件名
...
}规则只有一条:如果一个类被声明为 public,它必须放在一个同名的 .java 文件中,大小写完全一致。
# 错误示范
# 文件名:hello.java(小写 h)
# 类名:HelloWorld(大写 H)
javac hello.java编译器会直接拒绝:
hello.java:1: error: class HelloWorld is public,
should be declared in a file named HelloWorld.java
public class HelloWorld {
^那如果去掉
public呢?class HelloWorld(没有public)是默认可见性,编译器就不再检查文件名了。但——别这么干。永远让文件名等于主类的类名,大小写也必须一致。这是一个不需要思考的约定,违反它只会给自己找麻烦。
四条规则一句话总结
花括号要成对 ✅ 分号不能漏 ✅ 大小写要看准 ✅ 文件名字要对 ✅graph TD
A[写一段 Java 代码] --> B{花括号成对?}
B -->|否| C[编译错误:预期花括号]
B -->|是| D{末尾有分号?}
D -->|否| E[编译错误:';' expected]
D -->|是| F{大小写正确?}
F -->|否| G[编译错误或运行时找不到类]
F -->|是| H{文件名=类名?}
H -->|否| I[编译错误:文件名不匹配]
H -->|是| J[✅ 编译通过,准备运行!]验收标准
- [ ] 你能说出 Java 的四个核心语法规则
- [ ] 你能解释为什么花括号必须成对出现
- [ ] 你知道英文分号和中文分号的区别
- [ ] 你知道
System和system在 Java 里是不是一回事 - [ ] 你知道文件名必须和什么匹配
→ 下一步
规则都知道了,但错误还是会发生——漏了一条分号、拼错了类名、文件名没对齐。这些错误长什么样?怎么快速解决?
下一步:ch01-pitfalls.md —— 常见编译和运行错误全解析。