Java 初学者学习路线(含代码示例)

本文涉及的产品
无影云电脑个人版,1个月黄金款+200核时
无影云电脑企业版,8核16GB 120小时 1个月
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
简介: 本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。

基于初学者的学习规律,我整理了一条循序渐进的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 + "}";
    }
}

学习建议

  1. 循序渐进:按照上述顺序学习,每个阶段至少编写3-5个完整程序
  2. 动手实践:不要只看代码,亲手输入并运行,观察结果
  3. 调试排错:学会使用IDE的调试功能,理解程序执行流程
  4. 项目练习
    • 第一阶段:编写简单的计算器
    • 第二阶段:开发控制台版的学生管理系统
    • 第三阶段:实现Web版的图书管理系统

通过这种理论加实践的方式,你可以逐步掌握Java编程技能,为后续深入学习打下坚实基础。

相关文章
|
12天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1248 5
|
1天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
11天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1264 87
|
11天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1818 13