Thẻ
#java

Ngày 25 của 99 Ngày Java: varargs — mảng mặc cú pháp gọn với hai quy tắc cứng, bậc thang overload resolution chính xác → widening → boxing → varargs, cấu trúc base case + bước thu nhỏ của đệ quy, và ranh giới StackOverflowError quyết định khi nào nên đổi sang vòng lặp.

Ngày 24 của 99 Ngày Java: bộ ba contract của Object — equals chuyển "bằng nhau" từ tham chiếu sang định danh nghiệp vụ với contract 5 điều, quy tắc vàng equals đi cùng hashCode, hai bước tra cứu hash-rồi-equals của HashMap cùng bẫy key bị sửa, và Objects utility + record giúp cài chuẩn ít dòng nhất.

GC tự động nhưng không "miễn nghĩ": tiêu chí duy nhất của nó là reachability, heap chia thế hệ vì đa số object chết trẻ, stop-the-world pause là cái giá của việc dọn dẹp, và memory leak trong Java nghĩa là object vẫn reachable ngoài ý muốn — kèm 4 thủ phạm leak phổ biến và checklist vận hành GC trên production.

Ngày 23 của 99 Ngày Java: enum — tập giá trị cố định an toàn kiểu với == đáng tin, lớp đầy đủ với field, constructor và method, switch expression exhaustive biến compiler thành lưới an toàn khi thay đổi, cùng EnumMap và EnumSet chuyên dụng — và quy tắc lưu trữ theo name() thay vì ordinal.

Ngày 22 của 99 Ngày Java: wrapper class và autoboxing — cầu nối tự động giữa primitive và đối tượng, Integer cache với hiện tượng == đúng ở 127 sai ở 128, bẫy unboxing null gây NPE, boxing thầm lặng trong vòng lặp, và cách chọn giữa parseInt với valueOf.

Ngày 21 của 99 Ngày Java: vì sao nối chuỗi bằng + trong vòng lặp có chi phí bình phương, StringBuilder với capacity và bộ API thường dùng, String pool — lý do == đôi khi tình cờ đúng nhưng equals mới là quy tắc, cùng String.format và text block cho chuỗi nhiều dòng dễ đọc.

Ngày 20 của 99 Ngày Java: record — lớp dữ liệu trong một dòng khai báo với equals/hashCode/toString tự sinh, compact constructor cho validation, so sánh với Lombok và JavaBean, value semantics cùng record pattern của Java 21 — và ranh giới sử dụng: DTO dùng record, entity dùng class.

Ngày 19 của 99 Ngày Java: bốn dạng nested class — member inner (tham chiếu ngầm tới đối tượng ngoài), static nested (lựa chọn mặc định), local class trong method, anonymous class dùng một lần — cùng quy tắc capture effectively final và bảng quyết định chọn dạng phù hợp.

Ngày 18 của 99 Ngày Java: static — thành viên thuộc về lớp thay vì đối tượng, static block và static import, ba cấp độ của final (biến, method, lớp), mẫu hằng số public static final, và ranh giới quan trọng: static bất biến thì an toàn, static có thể ghi là trạng thái toàn cục nguy hiểm.