1. ตัวดำเนินการแบบปรนัย:switch
Java มีโอเปอเรเตอร์ที่น่าสนใจอีกตัวที่สืบทอดมาจากคุณปู่ (C++) เรากำลังพูดถึงswitch
แถลงการณ์ เราเรียกมันว่าตัวดำเนินการแบบปรนัยก็ได้ มันดูยุ่งยากเล็กน้อย:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
นิพจน์หรือตัวแปรระบุไว้ในวงเล็บ ถ้าค่าของนิพจน์คือvalue1
เครื่อง Java จะเริ่มดำเนินcode1
การ หากนิพจน์เท่ากับvalue2
การดำเนินการจะข้ามไปcode2
ที่ หากนิพจน์เท่ากับ จะvalue3
ถูกcode3
ดำเนินการ
ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
2. break
คำสั่งในswitch
คุณลักษณะที่สำคัญของswitch
คำสั่งคือโปรแกรมเพียงแค่ข้ามไปยังบรรทัดที่ต้องการ (ไปยังบล็อกรหัสที่ต้องการ) จากนั้นจึงดำเนินการบล็อกรหัสทั้งหมดจนถึงจุดสิ้นสุดของswitch
. ไม่เพียงเฉพาะบล็อกโค้ดที่สอดคล้องกับค่าในswitch
แต่บล็อกโค้ดทั้งหมดจนถึงจุดสิ้นสุดของswitch
.
ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
เมื่อกำหนดอุณหภูมิไว้ที่ 36 โปรแกรมจะป้อนswitch
คำสั่ง ข้ามไปและดำเนินการกับบล็อกแรกของโค้ด (กรณีแรก) จากนั้นจึงดำเนินการบล็อกที่เหลือของโค้ดอย่างสนุกสนาน
หากคุณต้องการรันโค้ดเพียงบล็อกเดียว — บล็อกโค้ดที่เกี่ยวข้องกับกรณีที่ตรงกัน — คุณต้องจบบล็อกด้วยbreak
คำสั่ง
ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
คุณสามารถละเว้นbreak
ในกรณีสุดท้ายของswitch
คำสั่งได้ เนื่องจากบล็อกนั้นเป็นบล็อกสุดท้ายที่มีหรือไม่มีคำสั่งพัก
3. การดำเนินการเริ่มต้น:default
อีกจุดสำคัญ จะเกิดอะไรขึ้นหากไม่มีกรณีใดในรายการที่switch
ตรงกับนิพจน์ในวงเล็บ
หากไม่พบกรณีที่ตรงกัน ส่วนที่เหลือของswitch
คำสั่งจะถูกข้ามไป และโปรแกรมจะดำเนินการต่อไปหลังจากวงเล็บปีกกาสิ้นสุดคำswitch
สั่ง
ที่กล่าวว่า คุณยังสามารถทำให้switch
คำสั่งทำงานเหมือนสาขาอื่นในif-else
คำสั่ง เมื่อต้องการทำเช่นนี้ ใช้default
คำหลัก
หากไม่มีcase
s ในswitch
บล็อกที่ตรงกับค่าของนิพจน์และswitch
มีdefault
บล็อก บล็อกเริ่มต้นจะถูกดำเนินการ ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
4. การเปรียบเทียบswitch
และif-else
คำสั่ง นั้นswitch
ค่อนข้างคล้ายกับif-else
คำสั่ง แต่ซับซ้อนกว่า
คุณสามารถเขียนโค้ดของswitch
คำสั่งใหม่เป็นหลายif
คำสั่ง ได้เสมอ ตัวอย่าง:
รหัสพร้อมสวิตช์ | รหัสด้วย if-else |
---|---|
|
|
โค้ดด้านซ้ายจะทำงานเหมือนกับโค้ดด้านขวาทุกประการ
if-else
ควรใช้ชุดคำสั่งหลายชุด เมื่อ if
คำสั่งประกอบด้วยนิพจน์ที่ซับซ้อนต่างๆ ในแต่ละกรณีที่แยกจากกัน
5. สำนวนใดสามารถใช้ในswitch
คำสั่งได้?
ไม่สามารถใช้ทุกประเภทเป็นcase
ป้ายกำกับในswitch
คำสั่งได้ คุณสามารถใช้ตัวอักษรประเภทต่อไปนี้:
- ประเภทจำนวนเต็ม:
byte
,short
,int
,long
char
String
enum
ประเภทใดก็ได้
คุณไม่สามารถใช้ประเภทอื่นเป็นป้ายกำกับเคสได้
ตัวอย่างการใช้ คำสั่ง enum
ภายใน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;
}
หมายเหตุ: หากคุณใช้ คำสั่ง enum
ภายในswitch
คุณไม่จำเป็นต้องเขียนชื่อคลาสหน้าค่าแต่ละค่าในป้ายcase
กำกับ แค่เขียนค่าก็พอ