1. Ang multiple-choice na operator:switch

Ang Java ay may isa pang kawili-wiling operator na minana nito mula sa kanyang grandpappy (C++). Pinag-uusapan natin ang switchpahayag. Matatawag din natin itong multiple-choice operator. Mukhang medyo mahirap:

switch(expression)
{
   case value1: code1;
   case value2: code2;
   case value3: code3;
}

Ang isang expression o variable ay ipinahiwatig sa loob ng mga panaklong. Kung ang halaga ng expression ay value1, ang Java machine ay magsisimulang magsagawa code1. Kung ang expression ay katumbas ng value2, execution jumps to code2. Kung ang expression ay katumbas ng value3, pagkatapos code3ay ipapatupad.

Halimbawa:

Code Output ng console
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
} 
High

2. breakpahayag saswitch

Ang isang mahalagang tampok ng isang switchpahayag ay ang programa ay tumalon lamang sa kinakailangang linya (sa kinakailangang bloke ng code) at pagkatapos ay ipapatupad ang lahat ng mga bloke ng code hanggang sa katapusan ng switch. Hindi lamang ang bloke ng code na tumutugma sa halaga sa switch, ngunit ang lahat ng mga bloke ng code hanggang sa katapusan ng switch.

Halimbawa:

Code Output ng console
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
} 
Low
Normal
High

Dahil sa temperatura na 36, ​​papasok ang programa sa switchpahayag, tumalon sa at isagawa ang unang bloke ng code (ang unang kaso), at pagkatapos ay masayang isagawa ang natitirang mga bloke ng code.

Kung gusto mong magsagawa lamang ng isang bloke ng code — ang bloke ng code na nauugnay sa katugmang case — pagkatapos ay kailangan mong tapusin ang bloke gamit ang isang breakpahayag;

Halimbawa:

Code Output ng console
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
}
Low

Maaari mong alisin ang breaksa huling kaso ng switchstatement, dahil ang block na iyon ay ang huling may break statement o walang.


3. Default na pagkilos:default

Isa pang mahalagang punto. Ano ang mangyayari kung wala sa mga kasong nakalista sa switchtugma ang expression sa mga panaklong?

Kung ang isang katugmang case ay hindi makita, pagkatapos ay ang natitirang bahagi ng switchpahayag ay nilaktawan, at ang programa ay magpapatuloy sa pagpapatupad pagkatapos ng curly brace na nagtatapos sa switchpahayag.

Iyon ay sinabi, maaari ka ring gumawa ng isang switchpahayag na kumikilos tulad ng ibang sangay sa isang if-elsepahayag. Upang gawin ito, gamitin ang defaultkeyword.

Kung wala sa mga cases sa switchblock ang tumutugma sa halaga ng expression at ang switchmay defaultblock, ang default na block ay isasagawa. Halimbawa:

Code Output ng console
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
Call an ambulance

4. Paghahambing switchatif-else

Ang switchpahayag ay medyo katulad ng isang if-elsepahayag, mas kumplikado lamang.

Maaari mong muling isulat ang code ng isang switchpahayag bilang maramihang ifmga pahayag anumang oras. Halimbawa:

Code na may switch Code na may if-else
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
} 
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Low");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("High");
}
else
{
   System.out.println("Call an ambulance");
}

Ang code sa kaliwa ay gagana nang eksaktong kapareho ng code sa kanan.

Mas mainam ang isang hanay ng maraming if-elsepahayag kapag ang isang ifpahayag ay naglalaman ng iba't ibang kumplikadong expression sa bawat hiwalay na kaso.



5. Anong mga ekspresyon ang maaaring gamitin sa isang switchpahayag?

Hindi lahat ng uri ay maaaring gamitin bilang casemga label sa isang switchpahayag. Maaari kang gumamit ng mga literal ng mga sumusunod na uri:

  • mga uri ng integer: byte, short, int,long
  • char
  • String
  • anumang enumuri

Hindi ka maaaring gumamit ng anumang iba pang uri bilang mga label ng case.

Halimbawa ng paggamit ng enumloob ng isang switchpahayag:

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;
}

Tandaan: Kung gagamit ka ng enuminside a switchstatement, hindi mo kailangang isulat ang pangalan ng klase sa harap ng bawat value sa mga caselabel. Ito ay sapat na upang isulat lamang ang halaga.