Java 程序设计实用教程
前言:为什么选择 Java?
Java 是一门历史悠久且充满活力的编程语言,它的核心优势在于:

- “一次编写,到处运行”(Write Once, Run Anywhere):得益于 Java 虚拟机,Java 代码可以在任何安装了 JVM 的操作系统上运行,无需修改。
- 面向对象:Java 是一门纯粹的面向对象语言,有助于构建模块化、可重用和易于维护的大型应用程序。
- 健壮性与安全性:拥有自动垃圾回收机制、严格的类型检查和异常处理机制,能有效减少程序错误。
- 丰富的生态系统:拥有海量的开源库(如 Spring, MyBatis)、强大的开发工具(如 IntelliJ IDEA, Eclipse)和活跃的社区支持。
- 广泛应用:从企业级后端服务、大数据处理(Hadoop, Spark),到 Android App 开发,Java 都占据着核心地位。
第一部分:Java 基础入门
第一章:环境搭建与第一个程序
1 安装 JDK (Java Development Kit)
JDK 是 Java 开发的核心包,它包含了编译器、JVM 和核心类库。
- 下载:访问 Oracle 官网 或 OpenJDK 官网(推荐,更开放)下载适合你操作系统的 JDK 版本。
- 安装:按照提示进行安装。关键:记住安装路径,
C:\Program Files\Java\jdk-17。 - 配置环境变量:
JAVA_HOME:新建系统变量,变量值为你的 JDK 安装路径。Path:在系统变量的Path中,新建两项,分别指向%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin,这使得你可以在任何目录下使用java和javac命令。
2 验证安装
打开命令行工具(Windows 的 CMD 或 PowerShell,macOS/Linux 的 Terminal),输入以下命令:

java -version javac -version
如果都显示版本号(如 java version "17.0.2"),则说明安装成功。
3 编写并运行第一个 Java 程序:HelloWorld
步骤 1:编写源代码
创建一个新文件,命名为 HelloWorld.java,并输入以下代码:

// HelloWorld.java
// 1. 定义一个公开的类,类名必须与文件名一致
public class HelloWorld {
// 2. 程序的入口点,这是所有 Java 应用程序执行的起点
public static void main(String[] args) {
// 3. 打印 "Hello, World!" 到控制台
System.out.println("Hello, World!");
}
}
代码解析:
public class HelloWorld:定义一个公共类。public static void main(String[] args):主方法,JVM 会从这里开始执行代码。System.out.println():向标准输出(通常是控制台)打印一行文本。
步骤 2:编译
打开命令行,进入 HelloWorld.java 文件所在的目录,执行编译命令:
javac HelloWorld.java
如果成功,会生成一个 HelloWorld.class 文件,这是 Java 虚拟机能够理解的字节码文件。
步骤 3:运行
使用 java 命令来运行编译后的字节码文件:
java HelloWorld
注意:这里不需要加 .class 后缀。java 命令会启动 JVM,加载 HelloWorld.class 并执行其 main 方法。
输出结果:
Hello, World!
第二部分:Java 核心语法
第二章:变量与数据类型
Java 是强类型语言,每个变量都必须声明其类型。
1 基本数据类型
| 类型 | 大小 (字节) | 描述 | 示例 |
|---|---|---|---|
byte |
1 | 8位有符号整数 | byte b = 100; |
short |
2 | 16位有符号整数 | short s = 20000; |
int |
4 | 32位有符号整数 (最常用) | int age = 30; |
long |
8 | 64位有符号整数 | long l = 9000000000L; (结尾加L) |
float |
4 | 单精度浮点数 | float f = 3.14f; (结尾加f) |
double |
8 | 双精度浮点数 (最常用) | double d = 3.14159; |
char |
2 | 单个 Unicode 字符 | char c = 'A'; |
boolean |
1 | 布尔值,true 或 false |
boolean isJavaFun = true; |
2 引用数据类型
- 类:如
String,Scanner。 - 接口:如
Runnable。 - 数组:如
int[],String[]。
3 变量声明与赋值
// 声明 int number; // 声明并赋值 String name = "张三"; // 常量 (使用 final 关键字,一旦赋值不能改变) final double PI = 3.14159;
第三章:运算符
- 算术运算符:, , , , (取余), ,
- 关系运算符:, ,
>,<,>=,<=(返回boolean值) - 逻辑运算符:
&&(与), (或), (非) - 赋值运算符:, , , ,
- 三元运算符:
(条件) ? 值1 : 值2
示例:
int a = 10, b = 20; int max = (a > b) ? a : b; // max 的值为 20
第四章:流程控制
1 条件语句
- if-else
int score = 85; if (score >= 90) { System.out.println("优秀"); } else if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); } - switch (适用于多分支且变量为
int,String,enum等类型)int day = 3; switch (day) { case 1: System.out.println("星期一"); break; // 必须使用 break,否则会穿透 case 2: System.out.println("星期二"); break; // ... default: System.out.println("未知日期"); }
2 循环语句
- for 循环 (明确循环次数)
// 打印 1 到 10 for (int i = 1; i <= 10; i++) { System.out.println(i); } - while 循环 (条件满足时循环)
int count = 0; while (count < 5) { System.out.println("Count: " + count); count++; } - do-while 循环 (至少执行一次)
int num = 0; do { System.out.println(num); num++; } while (num < 0); // 即使条件不满足,循环体也会执行一次
3 跳转语句
break:跳出当前循环或switch语句。continue:跳过本次循环,直接进入下一次循环。
第三部分:面向对象编程
这是 Java 的核心思想,万物皆对象。
第五章:类与对象
1 定义类
类是对象的模板,定义了对象的属性(成员变量)和行为(方法)。
// Car.java
public class Car {
// 成员变量 (属性)
String brand;
String color;
int speed;
// 方法 (行为)
public void start() {
System.out.println(brand + " 汽车启动了!");
}
public void accelerate(int increment) {
speed += increment;
System.out.println("当前速度: " + speed + " km/h");
}
}
2 创建对象
使用 new 关键字创建类的实例(对象)。
// Main.java
public class Main {
public static void main(String[] args) {
// 创建 Car 类的对象
Car myCar = new Car();
// 访问对象的属性和方法
myCar.brand = "Toyota";
myCar.color = "Red";
myCar.speed = 0;
myCar.start(); // 输出: Toyota 汽车启动了!
myCar.accelerate(50); // 输出: 当前速度: 50 km/h
}
}
第六章:封装、继承、多态
1 封装
将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏对象的内部细节。
- 访问修饰符:
public:任何地方都可以访问。private:只能在当前类内部访问。protected:在同一个包内或子类中可以访问。- 默认 (无修饰符):在同一个包内可以访问。
封装实践:将属性设为 private,通过 public 的 getter 和 setter 方法来访问和修改它们。
public class Car {
private String brand; // 私有属性
// public 的 getter 方法
public String getBrand() {
return brand;
}
// public 的 setter 方法
public void setBrand(String brand) {
this.brand = brand; // this 指代当前对象
}
}
2 继承
子类继承父类的属性和方法,实现了代码复用,使用 extends 关键字。
// Animal.java (父类)
public class Animal {
public void eat() {
System.out.println("动物在吃东西");
}
}
// Dog.java (子类)
public class Dog extends Animal {
// Dog 继承了 Animal 的 eat() 方法
public void bark() {
System.out.println("汪汪叫");
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.eat(); // 调用继承来的方法
myDog.bark(); // 调用自己的方法
}
}
3 多态
同一个接口,使用不同的实例而执行不同操作。
- 前提:必须有继承关系。
- 体现:父类引用指向子类对象。
// Animal.java (同上)
// Dog.java (同上)
// 假设还有一个 Cat 类
public class Cat extends Animal {
@Override // 注解,表示重写父类方法
public void eat() {
System.out.println("猫在吃鱼");
}
}
// Main.java
public class Main {
public static void main(String[] args) {
// 父类引用指向子类对象
Animal animal1 = new Dog();
Animal animal2 = new Cat();
// 调用相同的方法,但执行了不同的逻辑
animal1.eat(); // 输出: 动物在吃东西 (注意:这里没有重写)
animal2.eat(); // 输出: 猫在吃鱼
// 要实现多态,子类必须重写父类方法
// 让我们修改一下 Dog
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗在吃骨头");
}
}
// 再次运行
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.eat(); // 输出: 狗在吃骨头
myCat.eat(); // 输出: 猫在吃鱼
}
}
第七章:常用 API 与工具类
1 String 类
不可变的字符序列。
String s1 = "Hello";
String s2 = new String("World");
String s3 = s1 + " " + s2; // "Hello World"
int len = s3.length();
boolean isEmpty = s3.isEmpty();
char c = s3.charAt(0); // 'H'
2 Math 类
数学工具类,所有方法都是静态的,直接通过类名调用。
double max = Math.max(10.5, 20.3); double sqrt = Math.sqrt(16); // 4.0 double random = Math.random(); // [0.0, 1.0) 之间的随机数
3 Scanner 类
用于获取用户输入。
import java.util.Scanner; // 需要导入包
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入你的名字: ");
String name = scanner.nextLine(); // 读取一行
System.out.print("请输入你的年龄: ");
int age = scanner.nextInt(); // 读取一个整数
System.out.println("你好, " + name + "! 你今年 " + age + " 岁。");
scanner.close(); // 关闭 Scanner,释放资源
}
}
第四部分:进阶与实战
第八章:异常处理
程序运行时可能出现的错误,使用 try-catch-finally 结构来优雅地处理异常。
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
try {
// 可能会抛出异常的代码块
System.out.println(numbers[5]); // 数组越界
} catch (ArrayIndexOutOfBoundsException e) {
// 捕获特定异常
System.out.println("数组索引越界了!错误信息: " + e.getMessage());
} finally {
// 无论是否发生异常,都会执行的代码块
System.out.println("程序执行完毕。");
}
}
}
第九章:集合框架
用于存储和操作对象集合的类库,最常用的是 List, Set, Map。
-
ArrayList:动态数组,允许重复元素。import java.util.ArrayList; import java.util.List; List<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Alice"); System.out.println(names.get(0)); // Alice System.out.println(names.size()); // 3 -
HashSet:哈希集合,不允许重复元素,无序。import java.util.HashSet; import java.util.Set; Set<String> uniqueNames = new HashSet<>(); uniqueNames.add("Alice"); uniqueNames.add("Bob"); uniqueNames.add("Alice"); // 这个添加操作无效 System.out.println(uniqueNames.size()); // 2 -
HashMap:哈希映射,存储键值对。import java.util.HashMap; import java.util.Map; Map<String, Integer> studentAges = new HashMap<>(); studentAges.put("张三", 20); studentAges.put("李四", 21); System.out.println(studentAges.get("张三")); // 20
第十章:文件操作与 I/O
使用 java.io 包中的类进行读写文件。
写入文件:
import java.io.FileWriter;
import java.io.IOException;
public class WriteFile {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("test.txt")) {
writer.write("这是第一行,\n");
writer.write("这是第二行。");
System.out.println("文件写入成功!");
} catch (IOException e) {
System.out.println("写入文件时出错: " + e.getMessage());
}
}
}
读取文件:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("读取文件时出错: " + e.getMessage());
}
}
}
第五部分:学习路径与资源推荐
学习路线图
- 基础阶段:掌握本教程第一、二、三部分,能独立编写控制台小程序。
- 面向对象阶段:深入理解第四部分,能熟练运用 OOP 思想设计小型类结构。
- API 与实战阶段:学习第五部分,了解常用库,并尝试做一些小项目,如学生管理系统、简单的图书管理系统、控制版贪吃蛇游戏等。
- 进阶阶段:
- 多线程:学习
Thread类和Runnable接口,理解并发编程。 - 网络编程:学习 Socket 编程,了解 HTTP 协议。
- 数据库:学习 JDBC,连接 MySQL 等数据库。
- 框架学习:选择一个主流框架,如 Spring Boot,进入企业级开发领域。
- 多线程:学习
推荐资源
- 官方文档:Oracle Java Documentation (最权威、最准确)
- 在线教程:
- 菜鸟教程:https://www.runoob.com/java/java-tutorial.html (入门快,示例多)
- W3Schools:https://www.w3schools.com/java/ (英文,交互式学习)
- 视频课程:
- Bilibili:搜索“Java零基础教程”,有许多优秀的免费课程。
- Coursera / Udemy:国际上高质量的付费课程。
- 开发工具:
- IntelliJ IDEA (社区版免费):强烈推荐,功能强大,智能提示好。
- Eclipse:经典开源 IDE。
- 书籍:
- 《Java核心技术 卷I》:基础知识讲解非常透彻。
- 《Effective Java》:Java 编程的最佳实践,进阶必读。
Java 是一门博大精深的语言,本教程为您勾勒出了一个清晰的入门框架,最重要的建议是:多动手,多实践,多思考,不要只停留在看懂,一定要亲手敲代码、改代码、运行代码,并尝试解决遇到的问题,祝您在 Java 的学习之路上一切顺利!
