Java 编程入门
Java 广泛用于企业系统、安卓和服务器。它的优势是同一个程序可以在多种操作系统上运行:源代码被编译为字节码,再在 JVM(Java 虚拟机)上执行。本文将带你编写第一个程序,学习变量、条件、循环和类,然后自己编译并运行。
本文所有示例都使用 Java 17 编译并运行,展示的输出为真实结果。
需要准备的东西
- JDK 17 或更新版本(用 `java -version` 和 `javac -version` 检查)
- VS Code 或 Notepad++ 等文本编辑器
工作原理
三个步骤:编写 `.java` 文件,用 `javac` 编译得到 `.class` 文件,再用 `java` 运行。
第一个程序
创建 `Hello.java`。类名必须与文件名一致。输入以下代码:
public class Hello {
public static void main(String[] args) {
System.out.println("สวัสดี Java");
}
}
编译并运行:
javac -encoding UTF-8 Hello.java
java -Dfile.encoding=UTF-8 Hello
输出:
สวัสดี Java
`main` 是程序的起点。`System.out.println` 用于输出文字。`-encoding UTF-8` 确保文件中的泰语被正确读取。
变量与类型
Java 是静态类型语言,必须为每个变量声明类型。
| 类型 | 用于存储 | 示例 |
|---|---|---|
| int | 整数 | `int age = 20;` |
| double | 小数 | `double price = 19.5;` |
| boolean | 真或假 | `boolean passed = true;` |
| String | 文本 | `String name = "สมชาย";` |
条件与循环
下面的例子包含一个根据分数判定等级的 `Student` 类,以及遍历学生列表的 `for` 循环。
import java.util.ArrayList;
import java.util.List;
public class Hello {
static class Student {
String name;
int score;
Student(String name, int score) {
this.name = name;
this.score = score;
}
String grade() {
if (score >= 80) return "A";
else if (score >= 70) return "B";
else if (score >= 50) return "C";
return "F";
}
}
public static void main(String[] args) {
System.out.println("สวัสดี Java");
List<Student> students = new ArrayList<>();
students.add(new Student("สมชาย", 85));
students.add(new Student("สมหญิง", 72));
students.add(new Student("สมศักดิ์", 45));
int total = 0;
for (Student s : students) {
System.out.println(s.name + " ได้เกรด " + s.grade());
total += s.score;
}
System.out.println("คะแนนเฉลี่ย: " + (total / students.size()));
}
}
实际输出:
สวัสดี Java
สมชาย ได้เกรด A
สมหญิง ได้เกรด B
สมศักดิ์ ได้เกรด F
คะแนนเฉลี่ย: 67
需要注意:
- `class Student` 嵌套在 `Hello` 中,作为静态嵌套类,用于把相关代码归类。
- `this.name = name` 用于区分参数与同名的字段。
- `total / students.size()` 是整数除法,所以结果是 67 而不是 67.33。若需要小数,请使用 `double`。
新手常见错误
- **文件名与类名不一致:** 如果类是 `public class Hello`,文件必须命名为 `Hello.java`。
- **漏写分号:** 每条语句都要以 `;` 结束。错误信息会指出对应的行。
- **泰语乱码:** 编译时使用 `-encoding UTF-8`,运行时使用 `-Dfile.encoding=UTF-8`。
- **无法识别 `javac`:** 检查 PATH 是否指向 JDK 的 `bin` 目录。
下一步
尝试编写一个小型计算器,用 `ArrayList` 保存数据,并把代码拆分成多个文件和多个类,然后再学习使用 Spring Boot 进行 Web 开发。
总结
Java 先编译源代码,再在 JVM 上运行。程序的起点是 `main` 方法,变量需要明确的类型,类用于组织程序结构。