Java 教程(一文讲透)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
Java 作为一门历史悠久且应用广泛的编程语言,在企业级开发、Android 应用、大数据处理等领域占据重要地位。无论是编程初学者还是希望提升技能的中级开发者,掌握 Java 都能为职业发展提供强大支持。本文将以 Java 教程 为核心,从基础语法到高级特性,结合实际案例和代码示例,帮助读者系统性地理解 Java 的核心概念。
一、Java 的基础语法与核心概念
1.1 程序结构与第一个 Java 程序
Java 程序的基本结构遵循 面向对象 的设计理念。每个 Java 程序由一个或多个类(Class)组成,每个类包含方法(Method)和变量(Variable)。以下是第一个 Java 程序的示例:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java 教程!");
}
}
- 类与对象:
HelloWorld
是一个类,可以理解为“蓝图”,而通过new HelloWorld()
创建的对象则是具体的“房子”。 - 主方法:
main
方法是程序的入口,所有 Java 应用必须包含这一方法。
1.2 变量与数据类型
Java 是强类型语言,变量需要声明类型后才能使用。基本数据类型包括:
类型 | 说明 | 占用字节 |
---|---|---|
byte | 字节型,范围 -128~127 | 1 |
short | 短整型,范围 -32768~32767 | 2 |
int | 整型,范围约 ±20 亿 | 4 |
long | 长整型,范围更大 | 8 |
float | 单精度浮点数 | 4 |
double | 双精度浮点数 | 8 |
char | 字符型,用单引号表示 | 2 |
boolean | 布尔型,值为 true 或 false | 1 |
案例:计算圆的面积时,可以声明变量存储半径和结果:
double radius = 5.0;
double area = Math.PI * radius * radius;
System.out.println("面积是:" + area);
1.3 控制结构
1.3.1 条件判断
if-else
语句用于根据条件执行不同逻辑:
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 70) {
System.out.println("良好");
} else {
System.out.println("需努力");
}
1.3.2 循环
for
循环:适合已知循环次数的情况:for (int i = 0; i < 5; i++) { System.out.println("当前计数:" + i); }
while
循环:条件满足时重复执行:int count = 0; while (count < 3) { System.out.println("循环次数:" + count); count++; }
二、面向对象编程(OOP)
2.1 类与对象
类是对象的模板,而对象是类的实例。例如,设计一个“银行账户”类:
public class BankAccount {
private double balance; // 私有属性,仅本类可直接访问
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
} else {
System.out.println("余额不足");
}
}
public double getBalance() {
return balance;
}
}
对象创建与使用:
BankAccount account = new BankAccount();
account.deposit(1000);
account.withdraw(500);
System.out.println("当前余额:" + account.getBalance());
2.2 继承与多态
2.2.1 继承
通过 extends
关键字实现继承,子类可以复用父类的代码:
class SavingsAccount extends BankAccount {
private double interestRate;
public SavingsAccount(double rate) {
this.interestRate = rate;
}
public void calculateInterest() {
double interest = getBalance() * interestRate;
deposit(interest);
}
}
2.2.2 多态
多态允许父类引用指向子类对象,并调用覆盖的方法:
BankAccount account = new SavingsAccount(0.05);
account.deposit(1000); // 调用父类方法
((SavingsAccount) account).calculateInterest(); // 显式类型转换后调用子类方法
2.3 抽象类与接口
- 抽象类:包含抽象方法(无实现)和具体方法,充当半成品模板:
abstract class Animal { abstract void makeSound(); public void sleep() { System.out.println("睡觉"); } }
- 接口:定义方法的“规范”,通过
implements
实现:interface Flyable { void fly(); } class Bird extends Animal implements Flyable { void makeSound() { System.out.println("啾啾"); } void fly() { System.out.println("飞翔"); } }
三、集合框架与泛型
3.1 集合基础
Java 集合框架提供了 List
、Set
、Map
等接口及其实现类。例如:
// List 允许重复元素,有序
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // 输出 "Alice"
// Set 禁止重复元素,无序
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(2); // 会被忽略
// Map 存储键值对
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 85);
3.2 泛型
泛型通过 <类型>
限定集合中存储的元素类型,避免类型转换错误:
List<String> stringList = new ArrayList<>();
stringList.add("Java"); // 正确
// stringList.add(100); // 编译报错
四、异常处理与多线程
4.1 异常处理
Java 通过 try-catch
捕获和处理异常:
try {
FileReader file = new FileReader("不存在的文件.txt");
} catch (FileNotFoundException e) {
System.out.println("文件未找到:" + e.getMessage());
} finally {
System.out.println("无论是否异常,都会执行");
}
4.2 多线程编程
通过 Thread
或 Runnable
实现多线程:
class MyThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("线程:" + Thread.currentThread().getName() + ",计数:" + i);
}
}
}
// 启动线程
Thread thread1 = new Thread(new MyThread(), "线程1");
thread1.start();
五、IO 操作与文件处理
Java 提供了字节流和字符流两种 IO 方式:
// 写入文件(字符流)
FileWriter writer = new FileWriter("output.txt");
writer.write("Java 教程示例\n");
writer.close();
// 读取文件(字节流)
FileInputStream fis = new FileInputStream("input.txt");
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
fis.close();
六、进阶主题与实践建议
6.1 泛型与 Lambda 表达式
Lambda 表达式简化了函数式编程:
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(item -> System.out.println(item.toUpperCase()));
6.2 学习路径建议
- 基础阶段:掌握语法、面向对象、集合和异常处理。
- 进阶阶段:深入多线程、IO、泛型及设计模式。
- 实战阶段:通过 Spring Boot、Android 开发等项目巩固知识。
结论
本文通过 Java 教程 的角度,从基础语法到高级特性,结合代码示例和实际场景,帮助读者构建系统化的 Java 知识体系。无论是编写第一个“Hello World”程序,还是设计复杂的多线程应用,理解核心概念并持续实践是关键。建议读者通过小项目逐步提升技能,同时关注 Java 生态系统的最新发展(如 Java 17+ 的新特性),以保持技术竞争力。