# 📚 Lộ Trình Học Java Core
## 🎯 Mục tiêu sau khoá học:
- Nắm vững cú pháp và cấu trúc cơ bản của Java.
- Hiểu và áp dụng lập trình hướng đối tượng (OOP).
- Làm quen với xử lý file, exception, collection, thread...
- Sẵn sàng học Java nâng cao (Spring, Hibernate, Android, ...)
---
## 📘 Giai đoạn 1: Làm quen với Java & lập trình cơ bản
| Chủ đề | Mô tả | Ví dụ bài tập |
|--------|-------|----------------|
| ✅ Cài đặt JDK, IDE (Eclipse/IntelliJ) | Biết cách cài đặt và tạo project đầu tiên | HelloWorld |
| ✅ Cấu trúc chương trình Java | `public class`, `main`, cách biên dịch | In ra tên, tuổi |
| ✅ Kiểu dữ liệu, biến, hằng số | int, float, boolean, String, final | Tính tuổi từ năm sinh |
| ✅ Toán tử | +, -, *, /, %, ++, --, logic | Tính diện tích hình tròn |
| ✅ Câu lệnh điều kiện | `if`, `else if`, `switch` | Xếp loại học lực |
| ✅ Vòng lặp | `for`, `while`, `do...while` | Tính tổng 1→n |
| ✅ Hàm (method) | Cách khai báo, gọi và truyền tham số | Viết hàm kiểm tra số nguyên tố |
---
## 📗 Giai đoạn 2: Lập trình hướng đối tượng (OOP)
| Chủ đề | Mô tả | Ví dụ bài tập |
|--------|-------|----------------|
| ✅ Class và Object | Khai báo class, tạo đối tượng | Class `Student` |
| ✅ Access Modifiers | `public`, `private`, `protected`, default | Thử truy cập thuộc tính giữa các class |
| ✅ Từ khóa `this`, `static`, `final` | Quản lý biến dùng chung, hằng số | Đếm số object được tạo |
| ✅ Constructor | Constructor mặc định & có tham số | Khởi tạo `Student` bằng constructor |
| ✅ Encapsulation | getter/setter | Ẩn thông tin số dư tài khoản |
| ✅ Inheritance (Kế thừa) | `extends`, gọi super class | Class `Employee` kế thừa `Person` |
| ✅ Polymorphism (Đa hình) | Overloading, Overriding | Ghi đè `toString()` |
| ✅ Abstract class, Interface | Lớp trừu tượng, giao diện | Interface `Shape` với `draw()` |
| ✅ Object Class & Wrapper Class | `toString()`, `equals()`, `Integer`, `Double` | So sánh đối tượng |
---
## 📙 Giai đoạn 3: Java nâng cao trong Core
| Chủ đề | Mô tả | Ví dụ bài tập |
|--------|-------|----------------|
| ✅ Exception Handling | `try-catch`, `finally`, `throw`, `throws` | Xử lý chia cho 0 |
| ✅ Collection Framework | `List`, `Set`, `Map`, `Queue` | Quản lý danh sách sinh viên |
| ✅ Generic | `List<String>`, `List<Integer>` | Viết hàm generic tính tổng |
| ✅ File I/O | Đọc ghi file với `File`, `BufferedReader`, `FileWriter` | Lưu danh sách sinh viên vào file |
| ✅ Enum | Khai báo enum và sử dụng | Enum các ngày trong tuần |
| ✅ Date and Time API | `LocalDate`, `LocalDateTime`, `DateTimeFormatter` | Tính tuổi từ ngày sinh |
| ✅ Lambda Expression | Cú pháp lambda và functional interface | Sắp xếp danh sách |
| ✅ Multithreading | `Thread`, `Runnable`, `synchronized` | In số lẻ chẵn song song |
---
## 📒 Giai đoạn 4: Dự án nhỏ & chuẩn bị học nâng cao
| Chủ đề | Mô tả |
|--------|-------|
| ✅ Mini Project 1 | Quản lý sinh viên: Thêm, sửa, xoá, tìm kiếm |
| ✅ Mini Project 2 | Quản lý thư viện: Mượn, trả sách |
| ✅ Tìm hiểu JDBC | Kết nối Java với MySQL |
| ✅ Tìm hiểu Java GUI (Swing/JavaFX) | Làm giao diện người dùng cơ bản |
| ✅ Chuẩn bị học Spring Boot | Nắm vững OOP và Maven/Gradle |
---
## 📌 Gợi ý timeline học tập
| Tuần | Nội dung |
|------|----------|
| 1-2 | Cơ bản + Lập trình cấu trúc |
| 3-4 | OOP + Mini Project |
| 5-6 | Collection, Exception, File I/O |
| 7-8 | Thread, Lambda, JDBC, GUI |
| 9+ | Dự án tổng hợp hoặc chuyển sang Java Web (Spring Boot) |