基于初学者的学习规律,我整理了一条循序渐进的Java学习路线,并为每个阶段配备了核心代码示例,帮助你边学边练。
第一阶段:Java基础入门
1. 开发环境与第一个程序
核心代码:Hello World
public class HelloWorld {
// 程序入口点
public static void main(String[] args) {
// 输出语句
System.out.println("Hello, World!");
// 练习:尝试修改输出内容,打印自己的名字
System.out.println("My name is: Java Learner");
}
}
2. 变量与数据类型
核心代码:变量使用示例
public class VariablesDemo {
public static void main(String[] args) {
// 基本数据类型
int age = 25; // 整数
double height = 1.75; // 浮点数
boolean isStudent = true; // 布尔值
char gender = 'M'; // 字符
// 引用类型
String name = "John Doe"; // 字符串
// 输出变量
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Height: " + height + "m");
// 练习:计算两个数的和
int num1 = 10;
int num2 = 20;
int sum = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + sum);
}
}
3. 流程控制语句
核心代码:条件与循环
public class ControlFlowDemo {
public static void main(String[] args) {
// 1. 条件语句
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
// 2. 循环语句 - 计算1到10的和
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println("1到10的和: " + sum);
// 3. 循环练习 - 打印10以内的偶数
int num = 1;
while (num <= 10) {
if (num % 2 == 0) {
System.out.print(num + " ");
}
num++;
}
}
}
4. 数组
核心代码:数组操作
public class ArrayDemo {
public static void main(String[] args) {
// 1. 数组声明与初始化
int[] numbers = {
10, 20, 30, 40, 50};
// 2. 访问数组元素
System.out.println("第一个元素: " + numbers[0]);
System.out.println("数组长度: " + numbers.length);
// 3. 遍历数组
System.out.println("数组元素:");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
System.out.println();
// 4. 增强for循环遍历
System.out.println("使用增强for循环:");
for (int num : numbers) {
System.out.print(num + " ");
}
System.out.println();
// 5. 数组练习 - 查找最大值
int max = numbers[0];
for (int num : numbers) {
if (num > max) {
max = num;
}
}
System.out.println("数组最大值: " + max);
}
}
5. 面向对象基础
核心代码:类与对象
// 定义一个学生类
class Student {
// 属性(成员变量)
private String name;
private int age;
private double score;
// 构造方法
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
// 方法(行为)
public void study() {
System.out.println(name + "正在学习");
}
public void showInfo() {
System.out.println("姓名: " + name + ", 年龄: " + age + ", 成绩: " + score);
}
// getter和setter方法
public String getName() {
return name;
}
public void setScore(double score) {
this.score = score;
}
}
// 测试类
public class OOPDemo {
public static void main(String[] args) {
// 创建对象
Student student1 = new Student("张三", 18, 90.5);
// 调用对象方法
student1.showInfo();
student1.study();
// 修改对象属性
student1.setScore(95.0);
System.out.println(student1.getName() + "的新成绩: " + student1.getScore());
}
}
第二阶段:Java核心进阶
1. 集合框架
核心代码:ArrayList使用
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo {
public static void main(String[] args) {
// 创建一个字符串列表
List<String> fruits = new ArrayList<>();
// 添加元素
fruits.add("苹果");
fruits.add("香蕉");
fruits.add("橙子");
// 访问元素
System.out.println("第二个水果: " + fruits.get(1));
// 遍历列表
System.out.println("所有水果:");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 检查元素是否存在
if (fruits.contains("香蕉")) {
System.out.println("列表中包含香蕉");
}
// 删除元素
fruits.remove("橙子");
System.out.println("删除后列表大小: " + fruits.size());
}
}
2. 异常处理
核心代码:异常处理示例
import java.util.Scanner;
public class ExceptionDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入第一个数字: ");
int num1 = Integer.parseInt(scanner.nextLine());
System.out.print("请输入第二个数字: ");
int num2 = Integer.parseInt(scanner.nextLine());
int result = num1 / num2;
System.out.println("结果: " + result);
}
catch (ArithmeticException e) {
System.out.println("错误: 除数不能为零");
}
catch (NumberFormatException e) {
System.out.println("错误: 请输入有效的数字");
}
catch (Exception e) {
System.out.println("发生未知错误: " + e.getMessage());
}
finally {
System.out.println("程序执行完毕");
scanner.close();
}
}
}
3. 文件操作
核心代码:文件读写
import java.io.*;
public class FileIODemo {
public static void main(String[] args) {
// 写入文件
try (BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt"))) {
writer.write("Hello, File!");
writer.newLine();
writer.write("这是一个文件写入示例");
System.out.println("文件写入成功");
} catch (IOException e) {
System.out.println("写入错误: " + e.getMessage());
}
// 读取文件
try (BufferedReader reader = new BufferedReader(new FileReader("test.txt"))) {
String line;
System.out.println("\n文件内容:");
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("读取错误: " + e.getMessage());
}
}
}
4. 多线程
核心代码:线程创建与使用
// 方式1: 继承Thread类
class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Thread " + Thread.currentThread().getId() + ": " + i);
try {
Thread.sleep(500); // 休眠500毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
// 方式2: 实现Runnable接口
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Runnable " + Thread.currentThread().getId() + ": " + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
// 启动线程方式1
MyThread thread1 = new MyThread();
thread1.start();
// 启动线程方式2
Thread thread2 = new Thread(new MyRunnable());
thread2.start();
System.out.println("主线程执行完毕");
}
}
第三阶段:Java Web基础
1. JDBC数据库操作
核心代码:JDBC连接MySQL
import java.sql.*;
public class JdbcDemo {
// 数据库连接信息
private static final String URL = "jdbc:mysql://localhost:3306/testdb";
private static final String USER = "root";
private static final String PASSWORD = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 获取连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
System.out.println("数据库连接成功");
// 3. 执行查询
stmt = conn.createStatement();
String sql = "SELECT id, name, age FROM users";
rs = stmt.executeQuery(sql);
// 4. 处理结果
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("ID: " + id + ", 姓名: " + name + ", 年龄: " + age);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 5. 关闭资源
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2. Servlet基础
核心代码:简单Servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 注解配置Servlet
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
// 获取输出流
PrintWriter out = response.getWriter();
// 输出HTML内容
out.println("<html>");
out.println("<head>");
out.println("<title>Hello Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello, Servlet!</h1>");
// 获取请求参数
String name = request.getParameter("name");
if (name != null && !name.isEmpty()) {
out.println("<p>欢迎你, " + name + "!</p>");
}
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// POST请求也使用doGet方法处理
doGet(request, response);
}
}
第四阶段:框架入门
MyBatis基础
核心代码:MyBatis映射接口
import org.apache.ibatis.annotations.Select;
import java.util.List;
// 用户数据访问接口
public interface UserMapper {
// 查询所有用户
@Select("SELECT id, name, age FROM users")
List<User> findAll();
// 根据ID查询用户
@Select("SELECT id, name, age FROM users WHERE id = #{id}")
User findById(int id);
}
// 用户实体类
class User {
private int id;
private String name;
private int age;
// getter和setter方法
public int getId() {
return id; }
public void setId(int id) {
this.id = id; }
public String getName() {
return name; }
public void setName(String name) {
this.name = name; }
public int getAge() {
return age; }
public void setAge(int age) {
this.age = age; }
@Override
public String toString() {
return "User{id=" + id + ", name='" + name + "', age=" + age + "}";
}
}
学习建议
- 循序渐进:按照上述顺序学习,每个阶段至少编写3-5个完整程序
- 动手实践:不要只看代码,亲手输入并运行,观察结果
- 调试排错:学会使用IDE的调试功能,理解程序执行流程
- 项目练习:
- 第一阶段:编写简单的计算器
- 第二阶段:开发控制台版的学生管理系统
- 第三阶段:实现Web版的图书管理系统
通过这种理论加实践的方式,你可以逐步掌握Java编程技能,为后续深入学习打下坚实基础。