สวิตช์, เคส, ค่าเริ่มต้น - 1

“สวัสดี อามีโก้!”

"สวัสดี Bilaabo! ดีใจที่ได้พบคุณอีกครั้ง เฉพาะการบรรยายของคุณเท่านั้นที่ดีและเข้าใจได้ ไม่เหมือน Java Memory Model นี้"

"ใช่ Bilaabo รู้วิธีเลือกบทเรียน วันนี้ฉันจะบอกคุณเกี่ยวกับคำสั่ง switch"

“ฉันคิดว่ามีคนบอกฉันเกี่ยวกับเรื่องนี้แล้ว”

"Ellie ทำเช่นนั้น Amigo ไม่ต้องการฟังบทเรียนเกี่ยวกับคำสั่ง switch หรือบางทีคุณอาจจะเริ่มสอนของคุณเอง"

"ไม่ ฉันต้องการ ฉันต้องการ เรามาฟังคำสั่งสวิตช์กัน"

"ตกลง ใน Java มีสิ่งที่เรียกว่าคำสั่ง switch สะดวกเมื่อคุณต้องการดำเนินการบางอย่างโดยขึ้นอยู่กับค่าต่างๆ ของตัวแปรบางตัว"

ตัวอย่างที่มีสวิตช์ รหัสเทียบเท่า
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

คำ สั่ง switchให้คุณข้ามไปยังส่วนของโค้ดที่ต้องการได้ หากตัวแปรที่ส่งผ่านไปยังตัวแปรนั้นตรงกับค่าที่ตามหลังตัวพิมพ์คำหลัก

ถ้า i เป็น 1 การดำเนินการจะข้ามไปยังบรรทัดที่ระบุว่า «กรณีที่ 1»

ถ้า i เป็น 2 การดำเนินการจะข้ามไปที่บรรทัดที่ระบุว่า «กรณี 2»

ถ้า i เป็น 3 การดำเนินการจะข้ามไปยังบรรทัดที่ระบุว่า «กรณี 3»

"หากไม่มีการข้ามไปยังกรณีใดๆ บล็อก «default» จะถูกดำเนินการ"

"ฉันเข้าใจแล้ว และทางด้านขวาคือตรรกะเดียวกัน แต่ดำเนินการโดยใช้คำสั่ง if"

"ใช่."

"แล้วคำว่า 'break' คืออะไร คุณบอกว่ามันใช้ได้เฉพาะในลูป?"

"ใช่ และที่นี่ เมื่อ คำสั่ง breakถูกดำเนินการ เราจะออกจากสวิตช์ ทันที "

"แต่หากลบคำสั่ง break บรรทัดทั้งหมดภายในสวิตช์จะถูกดำเนินการจนจบ"

ตัวอย่าง เอาต์พุต (สำหรับ i = 1) เอาต์พุต (สำหรับ i = 2)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
หนึ่ง
สอง
สาม
หลาย
สอง
สาม
มากมาย

"อันที่จริง case คือเลเบลในโค้ด ในคำสั่ง switch เราจะข้ามไปที่เลเบลถัดไปและเริ่มรันโค้ดทั้งหมดจนกว่าจะสิ้นสุดสวิตช์ หรือจนกว่าจะเจอคำสั่ง break"

"ถ้าเราไม่เขียนเบรก เส้นที่เราข้ามไปจะถูกดำเนินการ ตามด้วยบรรทัดอื่นๆ ทั้งหมดจนถึงเครื่องหมายปีกกาปิด ถูกต้องไหม"

"ใช่."

"ง่ายนิดเดียว แต่ฉันชอบใช้คำสั่ง if มากกว่า พวกเขาไม่มีคำสั่งหยุดที่ไร้จุดหมายเหล่านี้"

"เป็นความจริงที่คำสั่ง if มักจะกะทัดรัดกว่า แต่บางครั้งคำสั่ง switch ก็สามารถอ่านได้ง่ายกว่า"

"เปรียบเทียบ:"

ตัวอย่างที่มีสวิตช์ รหัสเทียบเท่า
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

"ฉันจะไม่บอกว่ามันอ่านง่ายขึ้น"

“โอเค แต่ตัวอย่างนี้ล่ะ?”

ตัวอย่างที่มีสวิตช์ รหัสเทียบเท่า
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

"Bilaabo ตัวอย่างของคุณดูไม่ถูกต้อง ดังนั้นฉันจะละเว้นคำสั่ง break ถ้าฉันใช้ return ได้ไหม"

"ถูกต้อง คำสั่ง return จะออกจากเมธอดทันที"

"ดูเหมือนว่าคำสั่ง if จะกระชับกว่าเสมอ แต่คำสั่ง switch กลายเป็นว่าอ่านง่ายขึ้นในเวลานี้"

"เฟ้ย ในที่สุดก็มา"

"อีกอย่างหนึ่ง คุณไม่จำเป็นต้องเขียนค่าเริ่มต้นในตอนท้าย หากคุณไม่เขียน ก็จะไม่มีอะไรเกิดขึ้นหากไม่มีป้ายกำกับใดที่ตรงกัน"

"เอ่อ แน่นอน เหมือน if-else แต่อ่านได้—อ่านง่ายกว่ามาก!"

"ดีมาก ฉันดีใจที่คุณชอบบทเรียนของฉัน"

"โอ้ ฉันเกือบลืม ในตอนแรก คุณสามารถใช้ได้เฉพาะประเภทดั้งเดิมและ enums ในคำสั่ง switch แต่ตอนนี้พวกเขาได้เพิ่มการรองรับสำหรับ Strings"

“คุณหมายความว่าฉันเขียนสิ่งนี้?”

ตัวอย่าง
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

"ครับ สะดวกใช่มั้ย"

"ใช่ คำสั่ง Switch ดีมาก!"