Bài 19. Câu Lệnh Switch ... Case Trong Java | Tự Học Java Căn Bản

Published on
Thuộc danh mục: Học Java Căn Bản|Đăng bởi: Lê Thanh Giang||7 min read
Facebook share iconLinkedIn share iconTwitter share iconPinterest share iconTumblr share icon
Bài 19. Câu Lệnh Switch ... Case Trong Java | Tự Học Java Căn Bản

Câu Lệnh Switch ... Case Trong Java Là Gì?

Trong lập trình Java, câu lệnh switch là một công cụ quan trọng để thực hiện các phép so sánh và điều kiện. Thay vì sử dụng nhiều câu lệnh if...else để kiểm tra các điều kiện khác nhau, câu lệnh switch giúp mã nguồn trở nên gọn gàng và dễ hiểu hơn. Câu lệnh switch thường được sử dụng khi bạn cần phải kiểm tra giá trị của một biến đối với một loạt các giá trị có thể có và thực hiện hành động tương ứng.

Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng câu lệnh switch ... case trong Java, các cú pháp cơ bản, ví dụ thực tế, và những điều cần lưu ý khi sử dụng.

Cú Pháp Cơ Bản của Câu Lệnh Switch

Câu lệnh switch trong Java có cú pháp cơ bản như sau:

switch (biến) {
    case giá trị_1:
        // Thực hiện hành động khi biến == giá trị_1
        break;
    case giá trị_2:
        // Thực hiện hành động khi biến == giá trị_2
        break;
    // Các case khác (nếu cần)
    default:
        // Thực hiện hành động nếu không có case nào khớp
}

Trong đó:

  • biến: Biến hoặc giá trị cần kiểm tra (có thể là int, char, String, hoặc một số kiểu dữ liệu khác).
  • case giá trị_n: Kiểm tra xem biến có giá trị là giá trị_n không. Nếu đúng, thực hiện đoạn mã bên trong case.
  • break: Dùng để thoát khỏi câu lệnh switch. Nếu không có break, chương trình sẽ tiếp tục kiểm tra các case tiếp theo, điều này có thể không mong muốn.
  • default: Là một trường hợp mặc định khi không có case nào khớp. Đây là phần không bắt buộc nhưng rất hữu ích khi bạn muốn xử lý các tình huống không lường trước.

Dưới đây là một ví dụ đơn giản về cách sử dụng câu lệnh switch trong Java để kiểm tra ngày trong tuần và in ra tên của ngày tương ứng:

public class SwitchExample {
    public static void main(String[] args) {
        int day = 3; // Giả sử ngày là thứ 3

        switch (day) {
            case 1:
                System.out.println("Chủ nhật");
                break;
            case 2:
                System.out.println("Thứ hai");
                break;
            case 3:
                System.out.println("Thứ ba");
                break;
            case 4:
                System.out.println("Thứ tư");
                break;
            case 5:
                System.out.println("Thứ năm");
                break;
            case 6:
                System.out.println("Thứ sáu");
                break;
            case 7:
                System.out.println("Thứ bảy");
                break;
            default:
                System.out.println("Ngày không hợp lệ");
        }
    }
}

Output:

Thứ ba

Trong ví dụ trên, biến day có giá trị là 3, và câu lệnh switch sẽ kiểm tra và in ra "Thứ ba" vì day == 3.

Sử Dụng switch với String

Java hỗ trợ sử dụng String trong câu lệnh switch, điều này giúp bạn dễ dàng so sánh các chuỗi văn bản.

public class SwitchStringExample {
    public static void main(String[] args) {
        String day = "Thứ ba";

        switch (day) {
            case "Chủ nhật":
                System.out.println("Ngày nghỉ");
                break;
            case "Thứ hai":
                System.out.println("Ngày làm việc");
                break;
            case "Thứ ba":
                System.out.println("Ngày làm việc");
                break;
            case "Thứ tư":
                System.out.println("Ngày làm việc");
                break;
            default:
                System.out.println("Ngày không xác định");
        }
    }
}

Output:

Ngày làm việc

Sử Dụng switch mà Không Cần break

Trong một số trường hợp, bạn có thể muốn thực hiện nhiều hành động cho các giá trị khác nhau mà không cần phải break. Điều này có thể thực hiện bằng cách không sử dụng break và để chương trình "tiếp tục" qua các case.

public class SwitchFallThrough {
    public static void main(String[] args) {
        int day = 3;

        switch (day) {
            case 1:
            case 2:
            case 3:
                System.out.println("Cuối tuần sắp đến");
                break;
            case 4:
            case 5:
                System.out.println("Ngày làm việc");
                break;
            default:
                System.out.println("Ngày không xác định");
        }
    }
}

Output:

Cuối tuần sắp đến

Trong ví dụ này, các case 1, case 2, và case 3 đều có chung hành động "Cuối tuần sắp đến".

Switch Expression (Switch trong các phiên bản Java mới)

Switch Expression (biểu thức switch) là một cải tiến quan trọng được giới thiệu trong Java 12. Trước đó, câu lệnh switch chỉ có thể được sử dụng như một câu lệnh thông thường. Tuy nhiên, với Switch Expression, bạn có thể sử dụng switch để trả về giá trị, điều này giúp giảm thiểu các vấn đề không mong muốn và làm mã nguồn trở nên linh hoạt hơn.

Cú Pháp Mới của Switch Expression

Cú pháp mới cho Switch Expression sử dụng từ khóa -> thay vì : và không cần break nữa.

int day = 3;
String result = switch (day) {
    case 1 -> "Chủ nhật";
    case 2 -> "Thứ hai";
    case 3 -> "Thứ ba";
    case 4 -> "Thứ tư";
    case 5 -> "Thứ năm";
    case 6 -> "Thứ sáu";
    case 7 -> "Thứ bảy";
    default -> "Ngày không hợp lệ";
};
System.out.println(result);

Output:

Thứ ba

Trong đó:

  • switch (day): Giống như câu lệnh switch truyền thống, bạn kiểm tra giá trị của day.
  • case 1 -> "Chủ nhật";: Nếu day == 1, biểu thức sẽ trả về giá trị "Chủ nhật".
  • default -> "Ngày không hợp lệ";: Trường hợp mặc định khi không có giá trị nào khớp, biểu thức trả về "Ngày không hợp lệ".
  • Không cần break: Khi sử dụng Switch Expression, bạn không cần phải dùng break vì mỗi case sẽ trả về một giá trị và kết thúc ngay sau đó.

Switch Expression với Biểu Thức Đa Dòng

Bạn cũng có thể sử dụng Switch Expression để thực hiện các hành động phức tạp hơn trong một block, sử dụng yield để trả về giá trị trong các khối lệnh nhiều dòng.

Ví dụ, bạn có thể tính toán hoặc thực hiện nhiều phép toán trước khi trả về giá trị:

int month = 4;
String season = switch (month) {
    case 12, 1, 2 -> {
        yield "Mùa đông";
    }
    case 3, 4, 5 -> {
        yield "Mùa xuân";
    }
    case 6, 7, 8 -> {
        yield "Mùa hè";
    }
    case 9, 10, 11 -> {
        yield "Mùa thu";
    }
    default -> {
        yield "Tháng không hợp lệ";
    }
};
System.out.println(season);

Output:

Mùa xuân

Ở đây:

  • yield dùng để trả về giá trị trong khối lệnh nhiều dòng.
  • Bạn có thể gộp nhiều case (ví dụ: case 12, 1, 2) cho các giá trị liên quan.

Lợi Ích của Switch Expression

  • Cải thiện tính linh hoạt: Bạn có thể trả về giá trị ngay lập tức mà không cần phải sử dụng break.
  • Dễ dàng xử lý nhiều giá trị hơn: Bạn có thể kết hợp nhiều case vào một dòng (như case 12, 1, 2), điều này giúp mã nguồn ngắn gọn và dễ hiểu hơn.
  • Tăng tính rõ ràng: Không cần phải lo lắng về việc thiếu break, điều này sẽ tránh các lỗi liên quan đến việc "fall-through" không mong muốn.

Kết Luận

Câu lệnh switch trong Java là một công cụ mạnh mẽ giúp bạn kiểm tra và so sánh giá trị của biến với một loạt các giá trị khả dĩ. Nó giúp mã nguồn trở nên gọn gàng và dễ hiểu hơn khi xử lý nhiều điều kiện. Tuy nhiên, bạn cần phải cẩn thận khi sử dụng switch để tránh các lỗi phổ biến như thiếu break hoặc nhầm lẫn với các kiểu dữ liệu không hỗ trợ.

Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về cách sử dụng câu lệnh switch ... case trong Java. Chúc bạn lập trình thành công!

Bài tiếp theo: Bài 20. Kiểm Tra Số Ngày Trong Tháng Bằng Switch ... Case

Bài viết mới nhất

Bài viết liên quan

Newsletter border

Đăng ký để nhận tin từ RiverLee