Java 基础教程:从入门到实践
本教程将带你走过 Java 编程的每一个关键步骤,从环境搭建到面向对象编程,再到常用 API 和实战项目。

第一部分:Java 简介与环境搭建
什么是 Java?
Java 是一种高级的、面向对象的、跨平台的编程语言,由 Sun 公司(现已被 Oracle 收购)于 1995 年推出。
- “一次编写,到处运行”(Write Once, Run Anywhere):这是 Java 最著名的特性,通过 Java 虚拟机,Java 代码可以在任何安装了 JVM 的操作系统上运行,而无需重新编译。
- 面向对象:Java 的核心思想是“万物皆对象”,这使得代码结构更清晰、更易于维护和扩展。
- 健壮性:拥有强大的异常处理机制和自动内存管理(垃圾回收 Garbage Collection, GC),减少了程序崩溃的风险。
- 安全性:Java 语言的设计本身就考虑了安全性,例如取消了指针操作,防止了非法内存访问。
Java 体系:JDK, JRE, JVM
理解这三者的关系至关重要:
- JVM (Java Virtual Machine - Java 虚拟机):是运行 Java 字节码的虚拟机,它是 Java 实现跨平台的核心,不同平台(Windows, Linux, macOS)有不同的 JVM,但它们都执行相同的 Java 字节码。
- JRE (Java Runtime Environment - Java 运行时环境):包含了运行 Java 程序所必需的环境,包括 JVM 和 Java 核心类库(
.jar文件),如果你只是想运行一个已经写好的 Java 程序,只需要安装 JRE 即可。 - JDK (Java Development Kit - Java 开发工具包):是用于开发 Java 程序的完整工具包,它包含了 JRE,同时还包含了编译器(
javac)、调试器(jdb)、文档生成工具(javadoc)等开发工具。如果你要写 Java 代码,就必须安装 JDK。
关系图:
JDK 包含 JRE,JRE 包含 JVM。
JDK (开发工具) -> JRE (运行环境) -> JVM (执行引擎)
环境搭建
-
下载 JDK:
(图片来源网络,侵删)- 访问 Oracle 官网:https://www.oracle.com/java/technologies/downloads/
- 选择适合你操作系统的 JDK 版本(推荐 LTS 版本,如 JDK 8, JDK 11, JDK 17, JDK 21)。
- 下载并安装。
-
配置环境变量:
- 目的:让命令行知道
javac(编译器)和java(运行时)命令在哪里。 - 步骤:
a. 右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
b. 在“系统变量”中,新建一个变量
JAVA_HOME,值为你的 JDK 安装路径(C:\Program Files\Java\jdk-17)。 c. 找到系统变量Path,点击“编辑”,新建”,添加%JAVA_HOME%\bin。 d. 保存所有弹出的窗口。
- 目的:让命令行知道
-
验证安装:
- 打开一个新的命令行窗口(CMD 或 PowerShell)。
- 输入
java -version,如果显示版本号,说明配置成功。 - 输入
javac -version,如果也显示版本号,说明编译器路径也正确。
第二部分:Java 基础语法
第一个 Java 程序:Hello, World!
创建一个名为 HelloWorld.java 的文件:
// HelloWorld.java
// 1. 定义一个公开的类,类名必须和文件名一致
public class HelloWorld {
// 2. 这是程序的主入口,JVM 会从这里开始执行代码
public static void main(String[] args) {
// 3. System.out.println() 是一个打印语句,会在控制台输出内容并换行
System.out.println("Hello, World!");
}
}
编译与运行:

- 打开命令行,进入
HelloWorld.java所在的目录。 - 编译:
javac HelloWorld.java- 如果没有报错,会生成一个
HelloWorld.class文件,这是 Java 字节码。
- 如果没有报错,会生成一个
- 运行:
java HelloWorld- 注意:这里不需要加
.class后缀,因为java命令启动 JVM,JVM 会去加载指定的类。
- 注意:这里不需要加
关键语法元素
-
注释:
- 单行注释:
// 注释内容 - 多行注释:
/* 注释内容 */ - 文档注释:
/** 注释内容 */(可用于生成 API 文档)
- 单行注释:
-
标识符与关键字:
- 标识符:给类、变量、方法等起的名字,规则:字母、数字、下划线、美元符组成,不能以数字开头,不能是关键字。
- 关键字:Java 保留的、有特殊含义的单词,如
public,class,void,int等。
-
数据类型: Java 是强类型语言,变量必须先声明类型后使用。
-
基本数据类型: | 类型 | 大小 (字节) | 默认值 | 描述 | | :--- | :--- | :--- | :--- | |
byte| 1 | 0 | 8位整数 | |short| 2 | 0 | 16位整数 | |int| 4 | 0 | 32位整数 (最常用) | |long| 8 | 0L | 64位整数 (后加L) | |float| 4 | 0.0f | 32位浮点数 (后加f) | |double| 8 | 0.0d | 64位浮点数 (最常用) | |char| 2 | '\u0000' | 16位 Unicode 字符 | |boolean| 1 | false |true或false| -
引用数据类型:
- 类:如
String,Scanner - 接口:如
List,Runnable - 数组:如
int[],String[]
- 类:如
-
-
变量与常量:
- 变量:存储数据的容器,值可以改变。
int age = 18; // 声明并初始化 String name = "张三"; age = 19; // 修改值
- 常量:值不能改变的变量,使用
final关键字。final double PI = 3.14159; // PI = 3.14; // 这行代码会报错
- 变量:存储数据的容器,值可以改变。
-
运算符:
- 算术运算符:, , , , (取余), ,
- 赋值运算符:, , , ...
- 比较运算符:, ,
>,<,>=,<=(返回boolean值) - 逻辑运算符:
&&(与), (或), (非) (用于连接boolean表达式) - 位运算符:
&, ,^, ,<<,>>,>>>
流程控制
-
if-else条件语句:int score = 85; if (score >= 90) { System.out.println("优秀"); } else if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); } -
switch选择语句:char grade = 'B'; switch (grade) { case 'A': System.out.println("优秀"); break; // 一定要有 break,否则会穿透执行 case 'B': System.out.println("良好"); break; case 'C': System.out.println("及格"); break; default: System.out.println("未知等级"); } -
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 = 1; do { System.out.println(num); num++; } while (num <= 5);
第三部分:核心概念:面向对象编程
这是 Java 的灵魂,万物皆对象。
类与对象
-
类:是创建对象的模板或蓝图,它定义了一组属性(变量)和方法(行为)。
// 定义一个“学生”类 public class Student { // 属性 (成员变量) String name; int age; // 方法 (成员方法) public void study() { System.out.println(name + "正在学习..."); } } -
对象:是类的具体实例,根据类这个蓝图,我们可以创建出多个具体的对象。
public class Main { public static void main(String[] args) { // 创建一个 Student 对象 Student student1 = new Student(); student1.name = "李四"; student1.age = 20; student1.study(); // 输出: 李四正在学习... // 创建另一个 Student 对象 Student student2 = new Student(); student2.name = "王五"; student2.age = 21; student2.study(); // 输出: 王五正在学习... } }
三大特性
-
封装:
-
目的:隐藏对象的内部状态,只暴露必要的操作接口,保护数据不被外部随意修改。
-
实现:使用
private关键字将属性设为私有,然后提供public的getter(获取) 和setter(设置) 方法来访问和修改这些属性。public class Student { private String name; // 私有属性,外部无法直接访问 // 公开的 getter 方法 public String getName() { return name; } // 公开的 setter 方法 public void setName(String newName) { this.name = newName; } }
-
-
继承:
- 目的:代码复用,子类可以继承父类的属性和方法,并可以扩展自己的新功能。
- 关键字:
extends - 特点:Java 只支持单继承,但可以通过接口实现多重继承的效果。
// 父类 public class Animal { public void eat() { System.out.println("动物吃东西"); } }
// 子类 Dog 继承自 Animal public class Dog extends Animal { // Dog 自动拥有 eat() 方法 public void bark() { System.out.println("汪汪叫"); } }
-
多态:
- 目的:提高代码的灵活性和可扩展性,允许不同类的对象对同一消息做出响应。
- 实现条件:继承、方法重写、父类引用指向子类对象。
// 父类 class Animal { public void makeSound() { System.out.println("动物发出声音"); } }
// 子类 class Cat extends Animal { @Override // 注解,表示重写父类方法 public void makeSound() { System.out.println("喵喵叫"); } }
class Dog extends Animal { @Override public void makeSound() { System.out.println("汪汪叫"); } }
// 测试多态 public class Test { public static void main(String[] args) { // 父类引用指向子类对象 Animal myCat = new Cat(); Animal myDog = new Dog();
myCat.makeSound(); // 输出: 喵喵叫 myDog.makeSound(); // 输出: 汪汪叫 }
其他重要 OOP 概念
- 抽象:通过抽象类和接口来实现,它隐藏了复杂的实现细节,只向用户展示必要的功能。
- 抽象类:使用
abstract关键字修饰,不能被实例化,可以包含抽象方法(没有方法体)和具体方法。 - 接口:是行为的规范,使用
interface关键字,接口中的方法默认是public abstract的,变量默认是public static final的,一个类可以实现多个接口。
- 抽象类:使用
第四部分:常用核心 API
Java 提供了强大的标准库,我们每天都在使用它们。
字符串处理
-
String:不可变的字符序列,一旦创建,内容就不能改变。String s1 = "Hello"; String s2 = s1 + " World"; // s1 不会变,会创建一个新的字符串对象
-
StringBuilder/StringBuffer:可变的字符序列,适用于频繁修改字符串的场景(如循环拼接)。StringBuilder:非线程安全,性能更高。StringBuffer:线程安全,性能稍低。StringBuilder sb = new StringBuilder(); sb.append("Hello"); sb.append(" "); sb.append("World"); String result = sb.toString(); // 结果为 "Hello World"
集合框架
用于存储、检索和操作一组对象。
-
List(列表):有序、可重复。ArrayList:基于数组实现,查询快,增删慢,最常用。LinkedList:基于链表实现,增删快,查询慢。import java.util.ArrayList; import java.util.List;
List
names = new ArrayList<>(); names.add("张三"); names.add("李四"); System.out.println(names.get(0)); // 输出: 张三 -
Set(集):无序、不可重复。HashSet:基于哈希表实现,存取速度快。TreeSet:基于红黑树实现,可以自动排序。import java.util.HashSet; import java.util.Set;
Set
uniqueNames = new HashSet<>(); uniqueNames.add("张三"); uniqueNames.add("张三"); // 重复添加,无效 System.out.println(uniqueNames.size()); // 输出: 1 -
Map(映射):存储键值对,键是唯一的。HashMap:基于哈希表实现,存取速度快,最常用。TreeMap:基于红黑树实现,可以根据键排序。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
异常处理
程序运行时出现的错误,Java 通过 try-catch-finally 机制来处理异常,使程序更健壮。
public class ExceptionTest {
public static void main(String[] args) {
try {
// 可能会发生异常的代码块
int[] arr = new int[3];
System.out.println(arr[5]); // 这里会抛出 ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
// 捕获并处理特定类型的异常
System.out.println("数组越界了!请检查数组索引。");
e.printStackTrace(); // 打印异常的详细堆栈信息
} finally {
// 无论是否发生异常,finally 块中的代码都会执行
System.out.println("程序执行完毕。");
}
}
}
第五部分:进阶与实战
输入输出
-
使用
Scanner类从控制台读取用户输入。import java.util.Scanner; public class InputTest { 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,释放资源 } }
文件操作
- 使用
FileReader和FileWriter读写文本文件(旧方式,简单易用)。 - 使用
BufferedReader和BufferedWriter进行缓冲读写(推荐,性能更好)。 - 使用
Files和Paths类(NIO.2,更现代、更强大的文件操作 API)。
实战项目建议
学完基础后,通过项目来巩固是最好的方式。
-
控制台版学生信息管理系统:
- 功能:添加学生、删除学生、修改学生信息、查询所有学生、按学号查询。
- 练习:类的设计、集合的使用、循环、条件判断、简单的文件持久化(保存到文件)。
-
简单的计算器:
- 功能:支持加减乘除。
- 练习:输入处理、运算符逻辑、异常处理(如除零错误)。
-
猜数字游戏:
- 功能:随机生成一个数字,用户来猜,并提示“大了”或“小了”。
- 练习:随机数生成、循环、条件判断。
学习资源推荐
- 官方文档:Oracle Java Documentation (最权威,但可能对新手不友好)
- 在线教程:
- 菜鸟教程:https://www.runoob.com/java/java-tutorial.html (中文,快速入门)
- W3Schools:https://www.w3schools.com/java/ (英文,互动式学习)
- 书籍:
- 《Java核心技术 卷 I》(原版《Core Java》):经典入门书籍。
- 《Effective Java》:进阶必读,教你如何写出高质量的 Java 代码。
- 视频课程:
B站、慕课网等平台有大量免费的 Java 入门和进阶视频课程。
- IDE (集成开发环境):
- IntelliJ IDEA:强烈推荐,功能强大,智能提示好,社区版免费。
- Eclipse:老牌 IDE,免费开源。
学习 Java 是一个循序渐进的过程,本教程涵盖了从环境搭建到核心 OOP 概念再到常用 API 的所有基础知识。最重要的是多动手写代码,多思考,并尝试完成一些小项目来巩固所学。 祝你学习愉快!
