Strings in switch Statements
Thông thường khi cần kiểm tra một biến int chẳng hạn, có bằng giá trị nào đó không để xử lý theo từng trường hợp, nếu lượng giá trị lớn thì thay vì dùng if else thì chúng ta thường dùng switch-case. int value; ................ switch (value) { case 1: // do something ...
Thông thường khi cần kiểm tra một biến int chẳng hạn, có bằng giá trị nào đó không để xử lý theo từng trường hợp, nếu lượng giá trị lớn thì thay vì dùng if else thì chúng ta thường dùng switch-case.
int value; ................ switch (value) { case 1: // do something break; case 2: // do something break; case 3: // do something break; }
int là kiểu nguyên thủy, vậy nếu value cần so sánh là String thì có sử dụng được không ? Vì String là object nên phép so sánh == chưa chắc đã đúng như mong đợi, nên thường chúng ta sẽ nghi ngờ là không biết có dùng dùng được không ? Câu trả lời là có, nhưng phải từ bản JDK 7 trở lên, java đã hỗ trợ chúng ta có thể sử dụng String object trong câu lệnh switch. Khi so sánh với các điều kiện java sẽ sử dụng method "String.equals" vì vậy nếu cần thì hãy cứ sử dụng đừng lo lắng về việc sẽ bị so sánh sai giá trị.
Test:
String test = "he".concat("llo"); System.out.println((test == "hello") + "-----" + test.equals("hello")); switch (test) { case "hello": System.out.println("test -> hello"); break; }
Kết quả:
I/System.out: false-----true I/System.out: test -> hello
--> switch đã sử dụng equals khi so sánh. Trên đây là một lưu ý nhỏ, hi vọng giúp ích được ai đó, nhưng chắc mọi người đều biết cả rồi =)) Chúc mọi người buổi tối vui vẻ