Java Highlight

Java Highlight Java Highlight | Website Học Lập Trình Java | Blogs Java Website: https://javahighlight.com/

🕰️ Lớp java.time.LocalTime trong Java | Biểu Diễn Thời Gian Không Kèm Múi GiờTrong Java, lớp java.time.LocalTime chuyên ...
05/09/2025

🕰️ Lớp java.time.LocalTime trong Java | Biểu Diễn Thời Gian Không Kèm Múi Giờ

Trong Java, lớp java.time.LocalTime chuyên dùng để biểu diễn thời gian trong ngày theo chuẩn ISO-8601, như "10:15:30", mà không bao gồm ngày hay múi giờ.

Điểm nổi bật:

Immutable (bất biến) và thread-safe, giúp code an toàn và dễ bảo trì.

Chỉ lưu phần giờ-phút-giây (ngày, tháng, múi giờ không được lưu).

Một số phương thức hữu ích:

now() – Lấy thời gian hiện tại của hệ thống.

of(...) – Tạo thời gian tùy chỉnh, ví dụ: giờ, phút, giây, nanô-giây.

format(...) – Định dạng thời gian theo mẫu mong muốn.

plusHours(), minusMinutes() – Thao tác cộng/trừ thời gian.

atDate(...) – Kết hợp với một ngày để tạo LocalDateTime.

Ví dụ minh họa nhanh:

LocalTime current = LocalTime.now(); // Thời gian hiện tại
LocalTime custom = LocalTime.of(14, 30); // 14:30:00
LocalTime plusTime = current.plusHours(2); // Cộng thêm 2 giờ
String formatted = current.format(DateTimeFormatter.ofPattern("HH:mm")); // Ví dụ: "14:45"

Muốn hiểu chi tiết về cách sử dụng lớp này với ví dụ và cú pháp đầy đủ, hãy ghé thăm:
🔗 https://javahighlight.com/java/lop-localtime-trong-java

⏳ Lớp java.time.LocalDate trong Java | Biểu Diễn Ngày Không Kèm Thời GianTrong Java, lớp java.time.LocalDate là lựa chọ...
04/09/2025

⏳ Lớp java.time.LocalDate trong Java | Biểu Diễn Ngày Không Kèm Thời Gian

Trong Java, lớp java.time.LocalDate là lựa chọn hoàn hảo khi bạn chỉ cần làm việc với ngày (không kèm thời gian hay múi giờ). Đây là một lớp bất biến (immutable), an toàn với đa luồng và dùng chuẩn lịch ISO-8601 – rất phù hợp để lưu trữ ngày sinh, lịch hẹn hoặc ngày đặc biệt.

Điểm nổi bật:

Không lưu thời gian hay múi giờ, chỉ chứa thông tin ngày, tháng, năm.

Hỗ trợ tạo ngày bằng cách dùng:

now(), of(year, month, day), parse(...), ofYearDay(year, dayOfYear).

Có thể đọc các thành phần như: getYear(), getMonth(), getDayOfMonth(), getDayOfWeek(), isLeapYear(), lengthOfMonth() và hàng loạt phương thức truy xuất khác.

Cho phép thao tác ngày dễ dàng: plusDays(), minusDays(), withYear(), withMonth().

So sánh ngày hiệu quả: isBefore(), isAfter(), isEqual(); và định dạng với format(DateTimeFormatter).

Để xem chi tiết ví dụ và cú pháp đầy đủ, bạn có thể truy cập tại:
🔗 https://javahighlight.com/java/lop-localdate-trong-java

⏰ Ngày & Giờ (Date & Time) trong Java | API Date/TimeJava cung cấp đầy đủ các API để xử lý ngày giờ — từ kiểu dữ liệu cũ...
03/09/2025

⏰ Ngày & Giờ (Date & Time) trong Java | API Date/Time

Java cung cấp đầy đủ các API để xử lý ngày giờ — từ kiểu dữ liệu cũ đến phiên bản hiện đại trong Java 8+:

API cũ (java.util, java.sql): Bao gồm Date, Calendar, GregorianCalendar, TimeZone, Timestamp… Tuy tiện dụng trước đây nhưng dễ gây lỗi, không an toàn với đa luồng và khó mở rộng.

API mới (java.time, Java 8+): Gồm các lớp mạnh mẽ và rõ ràng như:

LocalDate, LocalTime, LocalDateTime — biểu diễn ngày, giờ riêng và kết hợp

Các lớp liên quan đến múi giờ: ZonedDateTime, OffsetDateTime, OffsetTime

Quản lý thời gian hiện tại: Clock

Múi giờ và lệch: ZoneId, ZoneOffset

Khoảng thời gian: Duration, Period, Instant

Các enum hữu ích: DayOfWeek, Month

Định dạng ngày giờ: DateTimeFormatter

Tóm lại: API mới trong java.time là cải tiến đáng kể từ Java 8, giúp xử lý ngày giờ ổn định hơn, an toàn với đa luồng, dễ dùng và tuân chuẩn ISO.

Muốn tìm hiểu chi tiết các lớp và cách dùng? Click vào đây:
🔗 https://javahighlight.com/java/ngay-va-gio-trong-java

🟣 Từ Khóa strictfp (strictfp Keyword) trong Java | Đảm Bảo Tính Nhất Quán và Chính XácBạn có biết rằng khi lập trình Jav...
02/09/2025

🟣 Từ Khóa strictfp (strictfp Keyword) trong Java | Đảm Bảo Tính Nhất Quán và Chính Xác

Bạn có biết rằng khi lập trình Java, các phép tính số thực có thể cho kết quả khác nhau tùy vào nền tảng bạn chạy? Ví dụ: trên máy tính này xử lý nhanh hơn, máy khác lại khác 1 chút — đó là lý do tại sao bạn nên biết đến từ khóa strictfp!

Điểm đáng chú ý về strictfp:

Giúp đảm bảo các phép tính dấu phẩy động (floating-point) tuân thủ chuẩn IEEE-754, từ đó luôn cho ra kết quả nhất quán dù chạy trên CPU, hệ điều hành khác nhau.

Áp dụng được cho lớp, phương thức, hoặc giao diện (interface) để kiểm soát độ chính xác khi xử lý số thực.

Truy cập để hiểu rõ hơn với ví dụ minh họa và giải thích chi tiết:
🔗 https://javahighlight.com/java/tu-khoa-strictfp-trong-java

🟣 Biểu Thức Lambda (Lambda Expression) trong Java | Mã Ngắn Gọn và Dễ HiểuJava 8 đã giới thiệu biểu thức lambda — một cá...
01/09/2025

🟣 Biểu Thức Lambda (Lambda Expression) trong Java | Mã Ngắn Gọn và Dễ Hiểu

Java 8 đã giới thiệu biểu thức lambda — một cách viết hàm ngắn gọn, không cần đặt tên, rất tiện lợi để thay thế các lớp ẩn danh (anonymous classes) rườm rà. Một lambda expression có cú pháp như:

(parameter1, parameter2) -> { thân hàm }

Ví dụ:

(a, b) -> a + b // hàm cộng đơn giản
() -> System.out.println("Hello!") // không có tham số

Ưu điểm nổi bật:

Viết gọn, sạch, dễ đọc — không cần khai báo thêm lớp.

Áp dụng cho Functional Interface — interface chỉ có một phương thức trừu tượng (Single Abstract Method, SAM) như Runnable, Consumer, Comparator, ...

Truyền hành vi (behavior) như dữ liệu — giúp code linh hoạt hơn, dễ dùng trong callback, stream và các tình huống xử lý dữ liệu.

Muốn tìm hiểu kỹ hơn, ví dụ cụ thể và cách dùng lambda hiệu quả? Xem chi tiết tại đây:
🔗 https://javahighlight.com/java/bieu-thuc-lambda-trong-java

🌀 Đệ Quy (Recursion) trong Java | Giải thích và Ứng dụngBạn đang muốn hiểu rõ đệ quy trong Java mà không lo bị “mắc lặp ...
30/08/2025

🌀 Đệ Quy (Recursion) trong Java | Giải thích và Ứng dụng

Bạn đang muốn hiểu rõ đệ quy trong Java mà không lo bị “mắc lặp vô tận”? Đây là lúc cần nắm được nền tảng!

Đệ quy là gì?
Là kỹ thuật mà một phương thức gọi lại chính nó để giải quyết bài toán bằng cách chia nhỏ thành các bài toán con, phù hợp với cấu trúc như cây, đồ thị hoặc cần lặp lại cho đến khi thỏa điều kiện.

Ưu điểm của đệ quy:

Mã nguồn được viết gọn, rõ ràng, dễ hiểu và dễ bảo trì.

Phù hợp với cấu trúc tự tương đồng như cây, danh sách liên kết, đồ thị.

Một số nhược điểm cần lưu ý:

Mỗi lần gọi đệ quy tạo thêm khung ngăn xếp, dễ gây StackOverflowError nếu không có điều kiện dừng hợp lý.

Tiêu tốn bộ nhớ và có thể kém hiệu quả hơn vòng lặp trong một số trường hợp.

Cấu trúc cơ bản gồm:

Base case (điều kiện dừng) — dừng đệ quy.

Recursive case, gọi lại chính nó với tham số khác.

Ví dụ nhanh:

// Giai thừa
public static int factorial(int n) {
if (n == 0) return 1;
return n * factorial(n - 1);
}

// Đệ quy in số từ n đến 1
public void printNumbers(int n) {
if (n

📝 Truyền Giá Trị Và Tham Chiếu trong Java | Các Cách Truyền Dữ Liệu vào Phương ThứcTrong Java, khái niệm truyền tham trị...
29/08/2025

📝 Truyền Giá Trị Và Tham Chiếu trong Java | Các Cách Truyền Dữ Liệu vào Phương Thức

Trong Java, khái niệm truyền tham trị (pass-by-value) rất rõ ràng: Mọi kiểu dữ liệu — dù là nguyên thủy hay đối tượng — đều được truyền bằng giá trị, không có kiểu truyền tham chiếu thực sự (pass-by-reference) như trong một số ngôn ngữ khác.

Với kiểu nguyên thủy (int, double, boolean, v.v.), Java tạo bản sao (copy) của giá trị biến và truyền vào phương thức. Do đó, thay đổi bên trong phương thức sẽ không ảnh hưởng đến biến gốc bên ngoài.

Với đối tượng, Java không truyền đối tượng mà truyền giá trị của tham chiếu đến đối tượng (tức là địa chỉ trong bộ nhớ). Nói cách khác:

Giá trị tham chiếu này được copy và truyền vào phương thức.

Nếu trong phương thức bạn thao tác thay đổi trạng thái nội tại của đối tượng (ví dụ: gọi setter), đối tượng gốc bên ngoài sẽ bị ảnh hưởng.

Nếu bạn gán lại tham chiếu (ví dụ, param = new Object()), điều đó không ảnh hưởng đến đối tượng ban đầu.

Một cách dễ hình dung theo chia sẻ trên cộng đồng:
“Java luôn luôn truyền theo tham trị, nhưng với đối tượng thì giá trị được truyền là tham chiếu đến đối tượng chứ không phải chính đối tượng.”

Muốn tìm hiểu chi tiết hơn với ví dụ cụ thể và minh họa trực quan? Đọc tại đây:
🔗 https://javahighlight.com/java/truyen-gia-tri-va-tham-chieu-trong-java

Phương Thức equals() & hashCode() trong Java | Tìm Hiểu Chi TiếtTrong Java, hai phương thức equals() và hashCode() đóng ...
28/08/2025

Phương Thức equals() & hashCode() trong Java | Tìm Hiểu Chi Tiết

Trong Java, hai phương thức equals() và hashCode() đóng vai trò cực kỳ quan trọng khi bạn làm việc với các cấu trúc dữ liệu dạng băm (như HashMap, HashSet). Mối liên kết giữa chúng đảm bảo dữ liệu được truy xuất chính xác và hiệu quả:

equals() được ghi đè để so sánh nội dung hai đối tượng thay vì so sánh địa chỉ bộ nhớ – giúp bạn xác định xem chúng có “bằng nhau” trên logic không.

hashCode() tạo ra mã băm giúp phân loại vật thể vào các “bucket” trong cấu trúc băm. Nếu hai đối tượng được coi là bằng nhau theo equals(), thì nhất định phải có cùng giá trị hash code để tránh lỗi khi tìm kiếm hoặc lưu trữ.

Nếu bạn chỉ ghi đè equals() mà không ghi đè hashCode(), có thể xảy ra tình trạng các đối tượng "bằng nhau" không được nhận diện đúng trong HashSet hay HashMap, gây lỗi logic khó tìm.

equals() còn tuân theo các quy tắc bắt buộc như: phản xạ, đối xứng, bắc cầu và không so sánh null – giúp đảm bảo tính nhất quán khi lập trình.

Muốn xem ví dụ minh họa rõ ràng hoặc cách ghi đè hai phương thức này chuẩn, hãy xem chi tiết tại đây:
🔗 https://javahighlight.com/java/phuong-thuc-equals-va-hashcode-trong-java

🔵 [LỚP WRAPPER TRONG JAVA – KẾT NỐI PRIMITIVE VỚI ĐỐI TƯỢNG]Bạn muốn sử dụng kiểu nguyên thủy như int, char, boolean… nh...
27/08/2025

🔵 [LỚP WRAPPER TRONG JAVA – KẾT NỐI PRIMITIVE VỚI ĐỐI TƯỢNG]

Bạn muốn sử dụng kiểu nguyên thủy như int, char, boolean… nhưng cần chúng hoạt động như đối tượng? Java có giải pháp: lớp Wrapper!

Vì sao nên dùng lớp Wrapper?

Cho phép dùng kiểu dữ liệu nguyên thủy dưới dạng đối tượng — cần thiết khi làm việc với collections, generics, multithreading…

Hỗ trợ tính NULL (vs primitive không thể null).

Kích hoạt autoboxing và unboxing — tự động chuyển đổi giữa primitive và đối tượng.

Ví dụ:

Integer number = 100; // Autoboxing: primitive int → Integer
int num = number; // Unboxing: Integer → int

Muốn tìm hiểu chi tiết, có ví dụ rõ ràng, cú pháp, cùng ưu-nhược điểm? Ghé ngay:
🔗 https://javahighlight.com/java/lop-wrapper-trong-java

⚡ [TOÁN TỬ instanceof TRONG JAVA – KIỂM TRA ĐỐI TƯỢNG NHANH VÀ AN TOÀN]Trong Java, khi ta cần kiểm tra một đối tượng có ...
26/08/2025

⚡ [TOÁN TỬ instanceof TRONG JAVA – KIỂM TRA ĐỐI TƯỢNG NHANH VÀ AN TOÀN]

Trong Java, khi ta cần kiểm tra một đối tượng có phải là thể hiện của một lớp (hoặc giao diện) nhất định hay không, instanceof chính là bạn đồng hành hữu ích!

Điều bạn cần biết:

Cú pháp đơn giản: đối_tượng instanceof LớpHoặcGiaoDiện

Kết quả trả về là giá trị boolean:

true nếu đối tượng là thể hiện của lớp/giao diện đó

false nếu không phải

Giúp tránh lỗi kiểu dữ liệu khi dùng ép kiểu (casting), từ đó giúp code an toàn hơn.

Bạn muốn thấy ví dụ cụ thể với instanceof trong Java? Tất cả có tại:
🔗 https://javahighlight.com/java/toan-tu-instanceof-trong-java

🟢 [GIAO DIỆN (INTERFACE) TRONG JAVA – BẢN THỎA THUẬN MẠNH MẼ VÀ TRỪU TƯỢNG]Trong lập trình Java, interface (giao diện) h...
25/08/2025

🟢 [GIAO DIỆN (INTERFACE) TRONG JAVA – BẢN THỎA THUẬN MẠNH MẼ VÀ TRỪU TƯỢNG]

Trong lập trình Java, interface (giao diện) hoạt động như một hợp đồng mà các lớp triển khai phải tuân theo — giúp tăng tính trừu tượng và đa hình trong code.

Những điểm nổi bật bạn nên biết:

Khai báo bằng từ khóa interface. Không thể tạo đối tượng trực tiếp từ interface vì nó không có constructor.

Các phương thức mặc định là public abstract, nhưng từ Java 8 trở đi class có thể chứa thêm:

Phương thức default (default): có thân hàm, không bắt buộc override.

Phương thức static (static): gọi trực tiếp từ interface, không bị override.

Các biến trong interface bắt buộc phải là public static final — hằng số, cần khởi tạo khi khai báo.

Ví dụ minh họa:
interface Animal {
void makeSound(); // abstract
default void eat() { // default
System.out.println("Động vật ăn.");
}
static void sleep() { // static
System.out.println("Động vật ngủ.");
}
}

class Dog implements Animal {
public void makeSound() {
System.out.println("Chó sủa.");
}
// Không cần override eat()
}

Dog d = new Dog();
d.makeSound(); // "Chó sủa."
d.eat(); // "Động vật ăn."
Animal.sleep(); // "Động vật ngủ."
``` :contentReference[oaicite:3]{index=3}

---

Muốn đọc kỹ hơn về cú pháp, ví dụ chi tiết và cách sử dụng nested interface, marker interface (như `Serializable`, `Cloneable`...), kế thừa interface, hãy truy cập ngay:

🔗 https://javahighlight.com/java/interface-trong-java

🟡 [TỪ KHÓA final TRONG JAVA – NGĂN CHẶN THAY ĐỔI VÀ KẾ THỪA KHÔNG ĐƯỢC]Bạn muốn biết ý nghĩa của từ khóa final trong Jav...
23/08/2025

🟡 [TỪ KHÓA final TRONG JAVA – NGĂN CHẶN THAY ĐỔI VÀ KẾ THỪA KHÔNG ĐƯỢC]

Bạn muốn biết ý nghĩa của từ khóa final trong Java?

Khám phá ngay khi bạn đọc bài viết này:
🔗 https://javahighlight.com/java/tu-khoa-final-trong-java

Cơ bản nhưng quan trọng:

final là một non-access modifier.

Được dùng để đảm bảo một phần của mã không bị thay đổi:

Biến (variable): Giá trị không thể bị gán lại sau khi khởi tạo — thường dùng như hằng số.

Phương thức (method): Không thể bị ghi đè (override) trong lớp con.

Lớp (class): Không thể bị kế thừa (extend) bởi lớp khác.

Nếu một biến final đang trỏ tới một đối tượng, bạn không thể thay đổi tham chiếu, nhưng nội dung của đối tượng đó vẫn có thể thay đổi — trừ khi đối tượng đó được thiết kế là bất biến.

Address

Việt Nam
Quang Nam-Da Nang

Website

https://www.blogger.com/profile/16315888043734721457, https://www.notion.so/Java-Highlight-1

Alerts

Be the first to know and let us send you an email when Java Highlight posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Videos

Share