Switch Case ใน Java คืออะไรและจะใช้งานอย่างไร
เผยแพร่แล้ว: 2022-03-04กรณี สวิตช์ใน Java เป็นหนึ่งในคำสั่ง Java จำนวนมากที่บอกภาษาการเขียนโปรแกรมว่าต้องทำอย่างไร เช่นเดียวกับประโยคในภาษาอังกฤษที่ให้แนวคิดที่สมบูรณ์ของข้อความและรวมถึงอนุประโยค คำสั่ง Java คือคำสั่งที่รวมนิพจน์อย่างน้อยหนึ่งนิพจน์ที่ล่าม Java ดำเนินการ พูดง่ายๆ ก็คือ คำสั่ง Java คือคำสั่งที่อธิบายสิ่งที่ควรเกิดขึ้น
คำสั่ง Java ลงท้ายด้วยเครื่องหมายอัฒภาค (;) และบอกให้ Java ประมวลผลคำสั่งจนถึงเครื่องหมายอัฒภาคนั้น ตามค่าดีฟอลต์ ล่าม Java จะเรียงลำดับตามคำสั่งที่เขียนและรันคำสั่งทีละคำสั่ง อย่างไรก็ตาม คำสั่งที่ควบคุมการไหลของโปรแกรม (คำสั่งควบคุมการไหล) เช่น ลูปและเงื่อนไข จะไม่เป็นไปตามลำดับการดำเนินการเริ่มต้น บทความนี้เน้นที่กลไกการควบคุมการเลือกประเภทหนึ่ง – คำสั่งกรณี สวิตช์ Java
สารบัญ
กรณีสวิตช์ใน Java คืออะไร?
Java รองรับคำสั่งสามประเภท: คำสั่งนิพจน์สำหรับการเปลี่ยนแปลงค่าของตัวแปร, วิธีการเรียกและการสร้างอ็อบเจ็กต์, คำสั่งประกาศสำหรับการประกาศตัวแปร, และคำสั่งควบคุมโฟลว์สำหรับกำหนดลำดับการดำเนินการของคำสั่ง
คำ สั่ง Java switch case เป็นประเภทของคำสั่ง control-flow ที่ยอมให้ค่าของนิพจน์หรือตัวแปรเปลี่ยนโฟลว์การควบคุมของการรันโปรแกรมผ่านสาขาแบบหลายทาง ตรงกันข้ามกับคำสั่ง if-then และ if-then-else คำสั่ง Java switch มีเส้นทางการดำเนินการหลายเส้นทาง กรณีสวิตช์ใน Java ใช้งานได้กับประเภทข้อมูลพื้นฐานแบบสั้น ไบต์ int และถ่าน จาก JDK7 สวิตช์ Java ยังสามารถใช้กับคลาสสตริง ประเภทที่แจกแจงได้ และคลาส Wrapper ที่รวมประเภทข้อมูลดั้งเดิม เช่น ไบต์ อักขระ จำนวนเต็ม และชอร์ต
เนื้อหาของคำสั่ง switch case ใน Java เรียกว่า switch block ทุกคำสั่งในบล็อกสวิตช์จะติดป้ายกำกับโดยใช้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่อย่างน้อยหนึ่งตัวหรือหลายตัว ดังนั้น คำสั่ง switch จะประเมินนิพจน์ของมัน ตามด้วยการดำเนินการคำสั่งทั้งหมดที่ตามหลัง case label ที่ตรงกัน
รับด้านล่างเป็นไวยากรณ์ของคำสั่ง switch case:
// เปลี่ยนคำสั่ง
สวิตช์ (นิพจน์)
{
// คำชี้แจงกรณี
// ค่าต้องเป็นนิพจน์ประเภทเดียวกัน
กรณีมูลค่า1 :
// คำสั่ง
หยุดพัก; // แบ่งเป็นตัวเลือก
กรณีมูลค่า2 :
// คำสั่ง
หยุดพัก; // แบ่งเป็นตัวเลือก
// เราสามารถมีคำชี้แจงกรณีจำนวนเท่าใดก็ได้
// ด้านล่างเป็นคำสั่งเริ่มต้น ใช้เมื่อไม่มีกรณีที่เป็นจริง
// ไม่จำเป็นต้องมีการหยุดพักในกรณีเริ่มต้น
ค่าเริ่มต้น :
// คำสั่ง
}
ตัวอย่างคำสั่งสวิตช์ Java
ตัวอย่างโค้ด Java ต่อไปนี้ประกาศ int ชื่อ "เดือน" ซึ่งมีค่าแทนหนึ่งใน 12 เดือนของปี รหัสใช้คำสั่ง switch case เพื่อแสดงชื่อเดือนตามค่าของเดือน
SwitchExample คลาสสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
int เดือน = 6;
สตริงเดือนสตริง;
สวิตช์ (เดือน) {
กรณีที่ 1: monthString = “มกราคม”;
หยุดพัก;
กรณีที่ 2: monthString = “กุมภาพันธ์”;
หยุดพัก;
กรณีที่ 3: monthString = “มีนาคม”;
หยุดพัก;
กรณีที่ 4: monthString = “เมษายน”;
หยุดพัก;
กรณีที่ 5: monthString = “พฤษภาคม”;
หยุดพัก;
กรณีที่ 6: monthString = “มิถุนายน”;
หยุดพัก;
กรณีที่ 7: monthString = “กรกฎาคม”;
หยุดพัก;
กรณีที่ 8: monthString = “สิงหาคม”;
หยุดพัก;
กรณีที่ 9: monthString = “กันยายน”;
หยุดพัก;
กรณีที่ 10: monthString = “ตุลาคม”;
หยุดพัก;
กรณีที่ 11: monthString = “พฤศจิกายน”;
หยุดพัก;
กรณีที่ 12: monthString = “ธันวาคม”;
หยุดพัก;
ค่าเริ่มต้น: monthString = “เดือนไม่ถูกต้อง”;
หยุดพัก;
}
System.out.println(monthString);
}
}
ผลผลิต: มิถุนายน
วัตถุประสงค์ของคำสั่งแบ่งในกรณีสวิตช์ Java
คำสั่งแบ่งเป็นส่วนสำคัญของกรณีสวิตช์ Java ที่ยุติคำสั่งสวิตช์ที่ล้อมรอบ จำเป็นต้องมีคำสั่ง break เนื่องจากไม่มีคำสั่งในบล็อกสวิตช์จะผ่านพ้นไป ดังนั้น โดยไม่คำนึงถึงนิพจน์ของเลเบลเคสที่ตามมา คำสั่งทั้งหมดหลังจากเลเบล case ที่ตรงกันจะถูกดำเนินการตามลำดับจนกว่าจะพบคำสั่ง break
รหัสต่อไปนี้เป็นตัวอย่างเพื่อแสดงบล็อกสวิตช์ที่ตกลงมาในกรณีที่ไม่มีคำสั่งแบ่ง
คลาสสาธารณะ SwitchExampleFallThrough {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
java.util.ArrayList<String> futureMonths =
ใหม่ java.util.ArrayList<String>();
int เดือน = 6;
สวิตช์ (เดือน) {
กรณีที่ 1: futureMonths.add("มกราคม");
กรณีที่ 2: futureMonths.add("กุมภาพันธ์");
กรณีที่ 3: futureMonths.add("มีนาคม");
กรณีที่ 4: futureMonths.add("เมษายน");
กรณีที่ 5: futureMonths.add("พฤษภาคม");
กรณีที่ 6: futureMonths.add("มิถุนายน");
กรณีที่ 7: futureMonths.add("กรกฎาคม");
กรณีที่ 8: futureMonths.add("สิงหาคม");
กรณีที่ 9: futureMonths.add(“กันยายน”);
กรณีที่ 10: futureMonths.add("ตุลาคม");
กรณีที่ 11: futureMonths.add(“พฤศจิกายน”);
กรณีที่ 12: futureMonths.add(“ธันวาคม”);
หยุดพัก;
ค่าเริ่มต้น: แตก;
}
ถ้า (futureMonths.isEmpty ()) {
System.out.println(“หมายเลขเดือนไม่ถูกต้อง”);
} อื่น {
สำหรับ (ชื่อเดือนสตริง : เดือนอนาคต) {
System.out.println(ชื่อเดือน);
}
}
}
}
เอาท์พุท:
มิถุนายน
กรกฎาคม
สิงหาคม
กันยายน
ตุลาคม
พฤศจิกายน
ธันวาคม
รหัสด้านบนแสดงเดือนของปีซึ่งตรงกับเดือนจำนวนเต็มและเดือนที่ตามมา ในที่นี้ คำสั่งแบ่งขั้นสุดท้ายไม่มีจุดประสงค์เพราะโฟลว์หลุดจากคำสั่งสวิตช์ การใช้คำสั่ง break มีประโยชน์เพราะทำให้โค้ดมีโอกาสเกิดข้อผิดพลาดน้อยลงและปรับเปลี่ยนได้ง่ายขึ้น ส่วนดีฟอลต์ในโค้ดจะจัดการค่าทั้งหมดที่ไม่ได้ควบคุมโดยส่วนเคสใดๆ
คำสั่งสวิตช์ Java ที่มีป้ายกำกับหลายตัว
คำสั่ง Switch ใน Java สามารถมีหลาย case label ได้เช่นกัน รหัสต่อไปนี้แสดงให้เห็นเช่นเดียวกัน – ที่นี่ จำนวนวันในเดือนใดเดือนหนึ่งของปีจะถูกคำนวณ
คลาส SwitchMultiple{
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
int เดือน = 2;
ปี int = 2020;
int numDays = 0;
สวิตช์ (เดือน) {
กรณีที่ 1: กรณีที่ 3: กรณีที่ 5:
กรณีที่ 7: กรณีที่ 8: กรณีที่ 10:
กรณีที่ 12:
numDays = 31;
หยุดพัก;
กรณีที่ 4: กรณีที่ 6:
กรณีที่ 9: กรณีที่ 11:
numDays = 30;
หยุดพัก;
กรณีที่ 2:
ถ้า (((ปี % 4 == 0) &&
!(ปี % 100 == 0))
|| (ปี % 400 == 0))
numDays = 29;
อื่น
numDays = 28;
หยุดพัก;
ค่าเริ่มต้น:
System.out.println("เดือนที่ไม่ถูกต้อง");
หยุดพัก;
}
System.out.println("จำนวนวัน = "
+ numDays);
}
}
เอาท์พุท:
จำนวนวัน = 29
คำชี้แจงกรณีสวิตช์ Java ที่ซ้อนกัน
สวิตช์ที่ซ้อนกันคือเมื่อคุณใช้สวิตช์เป็นส่วนหนึ่งของลำดับคำสั่งของสวิตช์ภายนอก ในกรณีนี้ ไม่มีข้อขัดแย้งระหว่างค่าคงที่ของเคสในสวิตช์อื่นและค่าคงที่ในสวิตช์ภายใน เนื่องจากคำสั่ง switch กำหนดบล็อกของตัวเอง
ตัวอย่างต่อไปนี้สาธิตการใช้ คำสั่ง Java switch-case ที่ ซ้อนกัน :
TestNest คลาสสาธารณะ {
โมฆะคงที่สาธารณะ main(String[] args)
{
สาขาสตริง = “CSE”;
ปี int = 2;
สวิตช์ (ปี) {
กรณีที่ 1:
System.out.println("วิชาเลือก : พีชคณิต ภาษาอังกฤษขั้นสูง");
หยุดพัก;
กรณีที่ 2:
สวิตช์ (สาขา) // สวิตช์ที่ซ้อนกัน
{
กรณี “CSE”:
กรณี “คสช.”:
System.out.println("วิชาเลือก : Big Data, Machine Learning");
หยุดพัก;
กรณี “ECE”:
System.out.println("วิชาเลือก : วิศวกรรมเสาอากาศ");
หยุดพัก;
ค่าเริ่มต้น:
System.out.println("วิชาเลือก : การเพิ่มประสิทธิภาพ");
}
}
}
}
เอาท์พุท:
วิชาเลือก: Big Data, Machine Learning
การใช้สตริงในคำสั่งสวิตช์
เริ่มต้นจาก JDK7 คุณสามารถใช้อ็อบเจ็กต์ String ในนิพจน์ของคำสั่ง switch การเปรียบเทียบออบเจ็กต์สตริงในนิพจน์ของคำสั่ง switch กับนิพจน์ที่เกี่ยวข้องของป้ายกำกับแต่ละกรณีจะเหมือนกับว่าใช้เมธอด String.equals นอกจากนี้ การเปรียบเทียบของวัตถุสตริงในนิพจน์คำสั่ง switch จะคำนึงถึงขนาดตัวพิมพ์
ตัวอย่างโค้ดต่อไปนี้แสดงประเภทของเกมตามค่าของสตริงที่ชื่อ "เกม"
คลาสสาธารณะ StringInSwitchStatementExample {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
เกมสตริง = "คริกเก็ต";
สลับ (เกม){
เคส “วอลเลย์บอล”: เคส”ฟุตบอล”: เคส”คริกเก็ต”:
System.out.println("นี่คือเกมกลางแจ้ง");
หยุดพัก;
เคส”การ์ดเกม”: เคส”หมากรุก”:เคส”ปริศนา”:เคส”บาสเก็ตบอลในร่ม”:
System.out.println("นี่คือเกมในร่ม");
หยุดพัก;
ค่าเริ่มต้น:
System.out.println("มันคือเกมอะไร?");
}
}
}
เอาท์พุท:
นี่คือเกมกลางแจ้ง
กฎที่ต้องจำเมื่อใช้คำสั่งสวิตช์ Java
จะเป็นการดีที่สุดหากคุณคำนึงถึงกฎเกณฑ์บางอย่างในขณะที่ใช้ คำสั่ง สวิตช์ Java ต่อไปนี้เป็นรายการเดียวกัน:
- ค่าสำหรับกรณีและตัวแปรในสวิตช์ควรมีประเภทข้อมูลเหมือนกัน
- คำสั่ง สวิตช์ Java ไม่อนุญาตให้มีค่าเคสที่ซ้ำกัน
- ค่าตัวพิมพ์ควรเป็นค่าตามตัวอักษรหรือค่าคงที่ ไม่อนุญาตให้ใช้ตัวแปร
- การใช้คำสั่ง break ภายในสวิตช์จะยุติลำดับคำสั่ง
- คำสั่ง break เป็นทางเลือก และการละเว้นคำสั่งนี้จะดำเนินการต่อไปในกรณีต่อไป
- คำสั่งเริ่มต้นยังเป็นทางเลือกและสามารถเกิดขึ้นได้ทุกที่ภายในบล็อกสวิตช์ หากไม่ได้วางไว้ที่ส่วนท้าย จะต้องเพิ่มคำสั่ง break หลังจากคำสั่งดีฟอลต์ เพื่อข้ามการดำเนินการของคำสั่ง case ที่ตามมา
ทางข้างหน้า
Java ได้รับความนิยมอย่างไม่มีที่เปรียบในหมู่โปรแกรมเมอร์และนักพัฒนา และเป็นหนึ่งในภาษาโปรแกรมที่เป็นที่ต้องการมากที่สุดในปัจจุบัน จำเป็นต้องพูด นักพัฒนารุ่นใหม่และวิศวกรซอฟต์แวร์ที่ต้องการเพิ่มทักษะให้กับตัวเองสำหรับตลาดงานที่เปลี่ยนแปลงตลอดเวลาจำเป็นต้องได้รับฐานที่มั่นเหนือทักษะ Java ของตน
การรับรอง PG ที่เชื่อมโยงกับงานของ upGrad ในสาขาวิศวกรรมซอฟต์แวร์ ได้รับการออกแบบมาเป็นพิเศษสำหรับนักศึกษาใหม่และผู้สอบปีสุดท้ายที่ต้องการเรียนรู้การเขียนโค้ดและได้รับการแต่งตั้งให้เป็นบทบาทซอฟต์แวร์ระดับเริ่มต้น
หากคุณสงสัยว่าหลักสูตรออนไลน์ 5 เดือนมีเนื้อหาอะไรบ้าง นี่คือไฮไลท์บางส่วนที่จะให้แนวคิดกับคุณ:
- รับ MERN Stack และความเชี่ยวชาญพิเศษ Cloud-Native
- เรียนรู้ทักษะระดับแนวหน้า เช่น Java, DSA, CSS3, HTML5, AWS, MERN, SQL และ NoSQL และอีกมากมาย
- เนื้อหามากกว่า 500 ชั่วโมงพร้อมการฝึกอบรมเชิงปฏิบัติมากกว่า 350 ชั่วโมง
- โครงการอุตสาหกรรมห้าโครงการและเซสชันสดมากกว่า 50 รายการ
- การเตรียมตำแหน่งและคำแนะนำด้านอาชีพ
- กระดานสนทนาและเครือข่ายเพียร์ที่แข็งแกร่ง
หากคุณต้องการเริ่มต้นเส้นทางสู่อาชีพที่คาดหวังในด้านวิศวกรรมซอฟต์แวร์ นี่คือโอกาสของคุณที่จะเรียนรู้จากสิ่งที่ดีที่สุด
1. กรณีในคำสั่ง switch คืออะไร?
คำสั่ง switch ใน Java ช่วยให้สามารถทดสอบความเท่าเทียมกันของตัวแปรกับรายการค่าได้ ในที่นี้ แต่ละค่าเรียกว่าเคส และตัวแปรที่เปิดอยู่จะถูกตรวจสอบสำหรับแต่ละเคส
2. ข้อดีของเคสสวิตช์คืออะไร?
ข้อได้เปรียบหลักของคำสั่ง Java switch case เหนือ if-else cascade แบบเดิมคือ แบบเดิมอนุญาตให้โปรแกรมเมอร์เขียนโค้ดที่กะทัดรัด ชัดเจน และอ่านได้ง่ายขึ้น ในทางกลับกัน คำสั่ง if-else มักเกี่ยวข้องกับการซ้ำซ้อนของโค้ดจำนวนมาก ดังนั้น หากเราต้องการเปลี่ยนส่วนใดส่วนหนึ่งของรหัส เราจะต้องทำการเปลี่ยนแปลงในส่วนอื่น เพื่อหลีกเลี่ยงกระบวนการที่ใช้เวลานานและเกิดข้อผิดพลาดได้ง่าย ควรใช้กรณีสวิตช์
3. switch case และ if-else ต่างกันอย่างไร?
ในกรณีของคำสั่งสวิตช์ กรณีต่างๆ จะถูกดำเนินการตามลำดับทีละรายการจนกว่าจะพบคีย์เวิร์ดตัวแบ่งหรือดำเนินการคำสั่งเริ่มต้น ในทางตรงกันข้าม ในกรณีของคำสั่ง if-else บล็อก 'if' หรือ 'else' จะถูกดำเนินการขึ้นอยู่กับเงื่อนไข