跳到内容

第 1 卷 / 第 1 章 / 第 3 课

1.3 Java 的基本语法规则 ​

前置知识:逐行理解 Java 代码

预计时间:15 分钟

完成标志:能根据编译器位置修复括号、分号、大小写和文件名问题

规则一:分隔符必须配对 ​

Hello World 中可以看到这些分隔符:

java
public class HelloWorld {                    // { 与 }
    public static void main(String[] args) { // ( 与 )、[ 与 ]
        System.out.println("Hello World!");  // ( 与 )、" 与 "
    }
}
  • {} 包围类体、方法体和其他代码块;
  • () 包围参数列表或调用参数;
  • [] 是数组类型或数组访问的一部分;
  • 成对双引号包围字符串字面量。

结构嵌套时,最后打开的分隔符先关闭。漏掉右花括号时,编译器可能直到文件末尾才确认结构不完整,所以箭头位置不一定就是你最初漏写的位置。

一个实用习惯:输入左括号后立即补右括号,再回到中间填写内容。编辑器的格式化功能也能暴露异常缩进,但最终仍以编译结果为准。

规则二:需要分号的语句才加分号 ​

变量声明、赋值、方法调用和 return 等语句通常以英文分号结束:

java
int count = 1;
count = count + 1;
System.out.println(count);
return;

类声明、方法声明以及后接代码块的 if、for、while 通常不在右花括号后添加分号:

java
if (count > 0) {
    System.out.println("positive");
}

所以“每一行都加分号”不是规则。Java 也允许一条语句跨多行,或多条短语句写在同一行;是否换行主要影响可读性,语法结束由记号决定。

中文分号 ; 与英文分号 ; 是不同字符。源代码中误用全角标点时,编译器通常会报告非法字符或语法错误。

规则三:标识符区分大小写 ​

以下名字彼此不同:

text
System   system
String   string
main     Main
HelloWorld   Helloworld

class、public、static 是关键字;System、String、main 和 println 不是关键字,它们分别是类名、方法名或成员名。编辑器配色由主题和语义分析决定,不能把“颜色不对”当作可靠诊断。优先阅读 javac 的错误类型、行号和插入符号位置。

常见命名约定:

  • 类名用大驼峰:HelloWorld、BankAccount;
  • 方法和变量用小驼峰:main、accountName;
  • 常量通常用大写下划线:MAX_RETRY_COUNT。

约定不全是编译器强制规则,却能降低阅读成本。

规则四:公开顶层类型与文件名对应 ​

java
// 文件:HelloWorld.java
public class HelloWorld {
}

如果把它保存在 hello.java,编译器会报告公开类应位于 HelloWorld.java。

去掉 public 后,HelloWorld 变成包私有顶层类,不是“仍然公开”。此时 Java 允许文件名不同,但没有充分理由时不要利用这个例外。初学项目采用一文件一个主要类,并让文件名与类名一致。

规则五:空白通常分隔记号,字符串中的空白属于数据 ​

下面两段代码语义相同,但第二段很难读:

java
int total = 1 + 2;
java
int total=1+2;

而字符串里的空格会进入输出:

java
System.out.println("Hello World");
System.out.println("HelloWorld");

这两行结果不同。不要为了“整齐”随意修改字符串内容。

最小检查顺序 ​

text
1. 文件名与公开类名是否一致
2. 括号和引号是否成对、嵌套是否正确
3. 需要分号的语句是否使用英文分号
4. 类名、方法名和变量名的大小写是否一致
5. 从第一条编译错误开始修,再重新编译

后面的错误可能由第一处语法破坏连锁产生。一次只处理最早的一个,往往能同时消掉多条诊断。

离开这一页前 ​

能说清“每行都要分号”为何不准确,知道 System 和 String 不是关键字,并能解释漏括号时错误箭头为什么可能落在后面。真正排错时从第一条诊断开始,每次只修一个明确原因。

现在去看这些错误实际长什么样。

→ 下一步:常见编译与运行错误

Built with VitePress | Software Systems Atlas