1. Toán tử trắc nghiệm:switch
Java có một toán tử thú vị khác mà nó kế thừa từ grandpappy của nó (C++). Chúng ta đang nói về switch
tuyên bố. Chúng ta cũng có thể gọi nó là toán tử trắc nghiệm. Có vẻ hơi rườm rà:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Một biểu thức hoặc biến được chỉ định trong dấu ngoặc đơn. Nếu giá trị của biểu thức là value1
, máy Java bắt đầu thực thi code1
. Nếu biểu thức bằng value2
, thì việc thực thi sẽ nhảy đến code2
. Nếu biểu thức bằng value3
, thì code3
được thực hiện.
Ví dụ:
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
2. break
tuyên bố trongswitch
Một tính năng quan trọng của switch
câu lệnh là chương trình chỉ cần nhảy đến dòng yêu cầu (đến khối mã được yêu cầu) và sau đó thực thi tất cả các khối mã cho đến khi kết thúc switch
. Không chỉ khối mã tương ứng với giá trị trong tệp switch
, mà tất cả các khối mã cho đến hết tệp switch
.
Ví dụ:
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
Với nhiệt độ là 36, chương trình sẽ nhập switch
câu lệnh, chuyển đến và thực thi khối mã đầu tiên (trường hợp đầu tiên), sau đó vui vẻ thực hiện phần còn lại của khối mã.
Nếu bạn chỉ muốn thực thi một khối mã — khối mã được liên kết với trường hợp khớp — thì bạn cần kết thúc khối bằng một break
câu lệnh;
Ví dụ:
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
Bạn có thể bỏ qua break
trường hợp cuối cùng của switch
câu lệnh, vì khối đó là khối cuối cùng có hoặc không có câu lệnh ngắt.
3. Hành động mặc định:default
Một điểm quan trọng khác. Điều gì xảy ra nếu không có trường hợp nào được liệt kê trong biểu switch
thức khớp với biểu thức trong ngoặc đơn?
Nếu không tìm thấy trường hợp phù hợp, thì phần còn lại của switch
câu lệnh sẽ bị bỏ qua và chương trình sẽ tiếp tục thực hiện sau dấu ngoặc nhọn kết thúc câu switch
lệnh.
Điều đó nói rằng, bạn cũng có thể làm cho một switch
câu lệnh hoạt động giống như nhánh khác trong một if-else
câu lệnh. Để làm điều này, sử dụng default
từ khóa.
Nếu không có case
s nào trong switch
khối khớp với giá trị của biểu thức và switch
có một default
khối, thì khối mặc định sẽ được thực thi. Ví dụ:
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
4. So sánh switch
vàif-else
Tuyên switch
bố tương tự như một if-else
tuyên bố, chỉ phức tạp hơn.
Bạn luôn có thể viết lại mã của một switch
câu lệnh dưới dạng nhiều if
câu lệnh. Ví dụ:
Mã với công tắc | Mã với if-else |
---|---|
|
|
Mã bên trái sẽ hoạt động giống hệt như mã bên phải.
Một chuỗi nhiều if-else
câu lệnh thích hợp hơn khi một if
câu lệnh chứa nhiều biểu thức phức tạp khác nhau trong từng trường hợp riêng biệt.
5. Những biểu thức nào có thể được sử dụng trong một switch
tuyên bố?
Không phải tất cả các loại đều có thể được sử dụng làm case
nhãn trong switch
câu lệnh. Bạn có thể sử dụng nghĩa đen của các loại sau:
- các kiểu số nguyên:
byte
,short
,int
,long
char
String
- bất kỳ
enum
loại
Bạn không thể sử dụng bất kỳ loại nào khác làm nhãn hộp.
Ví dụ về việc sử dụng một câu lệnh enum
bên trong switch
:
Day day = Day.MONDAY;
switch (day)
{
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
case THURSDAY:
System.out.println("Thursday");
break;
case FRIDAY:
System.out.println("Friday");
break;
case SATURDAY:
System.out.println("Saturday");
break;
case SUNDAY:
System.out.println("Sunday");
break;
}
Lưu ý: Nếu bạn sử dụng câu lệnh enum
bên trong switch
, bạn không cần viết tên lớp trước mỗi giá trị trong nhãn case
. Chỉ cần ghi giá trị là đủ.
GO TO FULL VERSION