Java — Từ Zero đến Senior
Khoá Java toàn diện: hiểu bản chất memory, JVM, bytecode, concurrency, security. Học theo triết lý WHY + cơ chế + hệ quả. Áp dụng được tư tưởng OOP sang mọi ngôn ngữ.
Nhập môn & Tư duy lập trình
Hiểu Java là gì, JVM/JRE/JDK, cài đặt môi trường, viết chương trình đầu tiên. Xây tư duy lập trình cơ bản trước khi đi vào syntax.
Java là gì? — Write Once, Run Anywhere
Hiểu Java là gì, tại sao Java ra đời, cơ chế bytecode + JVM giúp Java chạy mọi nơi, và khi nào nên chọn Java cho dự án của bạn.
JVM, JRE, JDK — ba khái niệm nền tảng
Phân biệt JVM, JRE, JDK một lần cho rõ: cái gì chạy code, cái gì đủ để deploy, cái gì cần để viết code. Hiểu kiến trúc bên trong JVM.
Cài đặt môi trường — JDK 21 và IntelliJ IDEA
Hướng dẫn cài JDK 21 trên macOS, Ubuntu và Windows, cài IntelliJ IDEA Community, quản lý nhiều version JDK bằng SDKMAN, và so sánh các IDE phổ biến.
Hello World — cấu trúc một class Java
Viết và hiểu chương trình Java đầu tiên từng dòng: class, main method, System.out.println, package, command-line args và lỗi thường gặp khi chạy.
Tư duy lập trình — input, xử lý, output
Nắm vững mô hình input-processing-output, phân rã bài toán thành các bước nhỏ, và 3 construct cơ bản của lập trình: sequence, selection, iteration.
Compile & Run — javac, bytecode, và vòng đời một chương trình Java
Hiểu hai lệnh javac và java, cơ chế bytecode stack-based, đọc bytecode bằng javap, single-file execution từ Java 11, và classpath cơ bản.
Mini-challenge: In lịch tháng hiện tại
Viết chương trình Java in lịch tháng giống lệnh cal trên Unix — luyện tư duy I-P-O, java.time API, printf formatting, và xử lý edge case.
Cú pháp Java & Kiểu dữ liệu
Biến, primitives, reference, var, ép kiểu, String, hằng số — hiểu theo hướng memory layout và tư duy dưới tầng JVM.
Biến và khai báo — cái tên gắn với một giá trị
Hiểu biến trong Java từ cái đơn giản nhất (ngăn kéo có tên) đến phân biệt primitive vs reference, cơ chế copy, pass-by-value và var.
Kiểu nguyên thuỷ — 8 loại, size, range, overflow và floating-point trap
Đi sâu vào 8 kiểu primitive của Java: bit width, min/max range, default value, overflow wrap-around và vì sao 0.1 + 0.2 không bằng 0.3 trong Java (và mọi ngôn ngữ dùng IEEE 754).
Kiểu tham chiếu — null, NPE, wrapper class và autoboxing
Hiểu sâu về reference types trong Java: null là gì, NullPointerException xảy ra thế nào, wrapper class và autoboxing hoạt động ra sao, Integer Cache gây surprise gì, và khi nào dùng .equals() thay vì ==.
Toán tử — số học, logic, so sánh, bitwise và assignment
Nắm vững toàn bộ hệ thống toán tử Java: arithmetic, comparison, logical (với short-circuit), bitwise/shift, assignment compound, ternary, operator precedence và những pitfall kinh điển như integer division hay == với String/Integer.
Ép kiểu — widening, narrowing, autoboxing và safe cast patterns
Hiểu toàn bộ cơ chế type casting trong Java: widening tự động không mất data, narrowing cần cast tường minh có thể tràn, autoboxing/unboxing, upcasting/downcasting reference, ClassCastException, và pattern matching instanceof từ Java 16.
String, Text Block và StringBuilder — xử lý text hiện đại trong Java
Nắm vững 3 công cụ text của Java: String immutable, Text Block multi-line (Java 15+), và StringBuilder mutable. Hiểu khi nào concat trong loop gây O(n²) và cách dùng StringBuilder đúng chỗ.
Hằng số, final và enum — giá trị khắc trên đá
Nắm vững 3 cơ chế 'không đổi được' trong Java: final biến/method/class, static final hằng số cấp class, và enum type-safe cho tập giá trị cố định. Phân biệt final reference với immutable object.
Mini-challenge: Máy tính BMI
Viết chương trình Java tính chỉ số BMI và phân loại theo WHO — luyện Scanner nhập liệu, String.format xuất 2 chữ số thập phân, và enum có field với static factory method.