Nội dung
Danh sách bài học
- 01~16 phút
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.
- 02~17 phút
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).
- 03~18 phút
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ì ==.
- 04~13 phút
Toán tử số học và so sánh — phép chia nguyên, modulo âm và bẫy ==
Arithmetic, comparison và assignment trong Java: vì sao 5/2 ra 2 chứ không phải 2.5, modulo âm giữ dấu dividend, compound assignment ngầm narrowing cast, và vì sao không bao giờ so sánh String/Integer bằng ==.
- 05~13 phút
Toán tử logic và bitwise — short-circuit, cờ bit và thứ tự ưu tiên
Vì sao && và || dừng sớm (short-circuit) và đó là pattern null-safe chuẩn của Java; bitwise/shift cho flags và bitmask; ternary cho gán có điều kiện; bảng operator precedence và quy tắc 'khi nghi ngờ, dùng ngoặc'.
- 06~16 phút
É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.
- 07~16 phút
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ỗ.
- 08~13 phút
Hằng số và final — giá trị khắc trên đá
final trên biến, parameter, method và class; static final cho hằng số UPPER_SNAKE_CASE; vì sao final reference không đồng nghĩa immutable object — và pattern immutable class hoàn chỉnh.
- 09~14 phút
Enum — tập giá trị cố định, type-safe thay cho magic number
Vì sao static final int không type-safe và enum giải quyết thế nào: cú pháp, switch exhaustive, field và method trong enum, built-in methods như name()/values(), và pitfall kinh điển với ordinal().
- 10~18 phút
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.