KH_WEB_CB_2026_01

KH_DSA_C_2026_01

KH_TT_CB_2026_01

KH_OOP_C_SHARP_2026_01

Java

🏷️ Labels trong Java – Không phải nhãn dán, mà là “lối tắt thông minh” cho vòng lặp

bởi Phạm Xuân Hoài - 2 tháng 2, 2026

🏷️ Labels trong Java – Không phải nhãn dán, mà là “lối tắt thông minh” cho vòng lặp

Trong Java, labels nghe tên thì tưởng là thứ gì đó cao siêu lắm…

Nhưng thực ra nó giống như đặt tên cho vòng lặp, để bạn nói với Java rằng:

“Ê, tao muốn nhảy ra đúng chỗ này, không phải lung tung nha!” 🚀

Nếu bạn từng:

  • loop lồng loop 🌀
  • break mà không biết nó thoát ra vòng nào 😵‍💫
  • muốn continue một vòng bên ngoài nhưng Java giả vờ không hiểu

👉 thì labels sinh ra là dành cho bạn.


🤔 Labels trong Java là gì?

Label là một tên định danh (identifier) được đặt trước một khối lệnh, thường dùng nhất là trước vòng lặp.

📌 Cú pháp siêu đơn giản:

tenLabel:
    statement;

Ví dụ:

outerLoop:
for (int i = 0; i < 3; i++) {
    System.out.println("i = " + i);
}

👉 outerLoop chính là label.


🧠 Labels dùng để làm gì?

👉 Labels cho phép bạn điều khiển breakcontinue một cách chính xác

Đặc biệt hữu dụng khi bạn có vòng lặp lồng nhau.

Không dùng label:

  • break → chỉ thoát vòng gần nhất
  • continue → chỉ nhảy vòng gần nhất

Có dùng label:

  • break label; → thoát đúng vòng bạn chỉ định
  • continue label; → nhảy sang lần lặp tiếp theo của vòng được đặt label

✨ Nói ngắn gọn: Label = GPS cho break / continue 🧭


🔥 Ví dụ 1: Break KHÔNG dùng label (và cái kết hơi buồn)

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (j == 1) {
            break;
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}

📌 Kết quả:

i=0, j=0
i=1, j=0
i=2, j=0

😐 break chỉ thoát vòng j, vòng i vẫn chạy tiếp.


🚀 Ví dụ 2: Break có label – thoát phát là ra luôn

outer:
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (j == 1) {
            break outer;
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}

📌 Kết quả:

i=0, j=0

💥 Gặp j == 1thoát luôn cả hai vòng Không cần cờ boolean, không cần logic rối não 👌


🔄 Ví dụ 3: Continue có label – nhảy vòng ngoài

outer:
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (j == 1) {
            continue outer;
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}

📌 Kết quả:

i=0, j=0
i=1, j=0
i=2, j=0

✨ Khi j == 1 → Java bỏ luôn phần còn lại của vòng i hiện tại, nhảy sang i++


⚠️ Labels KHÔNG phải dùng kiểu gì cũng được

❌ Không dùng label lung tung

label:
System.out.println("Hello"); // ❌ không có tác dụng gì

👉 Label chỉ thực sự có ý nghĩa khi đi kèm break hoặc continue.


❌ Không dùng label như goto

Java KHÔNG cho phép:

  • nhảy tự do
  • phá luồng chương trình bừa bãi

👉 Labels an toàn, không biến code thành “mê cung”.


✅ Khi nào NÊN dùng Labels?

✔ Loop lồng nhiều tầng

✔ Muốn thoát nhanh, rõ ràng

✔ Tránh tạo biến cờ (boolean found = false)

✔ Logic đọc vào là hiểu liền


❌ Khi nào KHÔNG nên dùng?

❌ Code đơn giản, chỉ 1 vòng lặp

❌ Lạm dụng làm code khó đọc

❌ Dùng để “hack logic” thay vì thiết kế lại code

📌 Rule of thumb:

Nếu dùng label mà người khác đọc không hiểu → nên refactor 😄


🧩 So sánh nhanh

Trường hợpKhông labelCó label
Thoát 1 vòngOKOK
Thoát nhiều vòng❌ rối✅ gọn
Code rõ ràng😵😎

🎯 Tổng kết nhẹ nhàng

  • Label không phải phép màu
  • Nhưng là vũ khí bí mật khi xử lý vòng lặp phức tạp
  • Dùng đúng chỗ → code gọn, dễ đọc, dễ bảo trì

💡 Hãy nhớ:

Label = đặt tên cho lối thoát 🏷️🚪