1. Câu hỏi
2. Phân tích
Đây là 1 kiến thức hết sức thú vị, mình đã làm Java nhiều năm nhưng không để ý. Thông thường khi viết switch-case, mình luôn viết đầy đủ break; , và thường cho default ở cuối command
Mọi thứ chạy ổn định và mình không đi sâu vào nghiên cứu, khi làm bài này đã làm sai, sau khi đọc java docs kỹ thì mình đã hiểu rõ bản chất vấn đề.
Đây là phần cần lưu ý trong docs
The break statements are necessary because without them, statements in switch blocks fall through: All statements after the matching case label are executed in sequence, regardless of the expression of subsequent case labels, until a break statement is encountered.
Khi không có break, tất cả các lệnh sau đó sẽ được chạy tuần tự, không quan tâm giá trị có match vơi giá trị trong switch condition không.
String fruit = "mango"; switch (fruit) { default: System.out.println("ANY FRUIT WILL DO"); case "Apple": System.out.println("APPLE"); case "Mango": System.out.println("MANGO"); case "Banana": System.out.println("BANANA"); break; }
Trong trường hợp này, vì default được cho lên đầu, nó sẽ in ra
ANY FRUIT WILL DO
Do không có lệnh break, nó sẽ tiếp tục chạy và in ra
APPLE
MANGO
BANANA
Đáp án:
3. Kết luận
Bạn có thể gõ code vào IDE để chạy lại và kiểm tra Source cho câu hỏi