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คำหลัก
หากไม่มีcases ใน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 charStringenumประเภทใดก็ได้
คุณไม่สามารถใช้ประเภทอื่นเป็นป้ายกำกับเคสได้
ตัวอย่างการใช้ คำสั่ง 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กำกับ แค่เขียนค่าก็พอ
GO TO FULL VERSION