1. Operator pilihan ganda:switch

Java memiliki operator menarik lainnya yang diwarisi dari grandpappy (C++). Kita berbicara tentang switchpernyataan itu. Kami juga bisa menyebutnya operator pilihan ganda. Ini terlihat sedikit rumit:

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

Ekspresi atau variabel ditunjukkan dalam tanda kurung. Jika nilai ekspresinya adalah value1, mesin Java mulai mengeksekusi code1. Jika ekspresinya sama dengan value2, eksekusi melompat ke code2. Jika ekspresi sama dengan value3, maka code3dieksekusi.

Contoh:

Kode Keluaran konsol
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. breakpernyataan diswitch

Fitur penting dari sebuah switchpernyataan adalah bahwa program hanya melompat ke baris yang diperlukan (ke blok kode yang diperlukan) dan kemudian mengeksekusi semua blok kode hingga akhir switch. Tidak hanya blok kode yang sesuai dengan nilai dalam switch, tetapi semua blok kode hingga akhir switch.

Contoh:

Kode Keluaran konsol
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

Diberi suhu 36, program akan memasukkan switchpernyataan, melompat ke dan mengeksekusi blok kode pertama (kasus pertama), dan kemudian dengan senang hati mengeksekusi blok kode lainnya.

Jika Anda ingin mengeksekusi hanya satu blok kode — blok kode yang terkait dengan case yang cocok — maka Anda harus mengakhiri blok dengan pernyataan break;

Contoh:

Kode Keluaran konsol
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

Anda dapat menghilangkan breakdi kasus terakhir dari pernyataan switch, karena blok tersebut adalah yang terakhir dengan atau tanpa pernyataan break.


3. Tindakan default:default

Poin penting lainnya. Apa yang terjadi jika tidak ada kasus yang tercantum dalam daftar switchyang cocok dengan ekspresi dalam tanda kurung?

Jika kasus yang cocok tidak ditemukan, maka pernyataan selanjutnya switchdilewati, dan program akan melanjutkan eksekusi setelah kurung kurawal mengakhiri pernyataan switch.

Meskipun demikian, Anda juga dapat membuat switchpernyataan berperilaku seperti cabang else dalam if-elsepernyataan. Untuk melakukan ini, gunakan defaultkata kunci.

Jika tidak ada cases di switchblok yang cocok dengan nilai ekspresi dan switchmemiliki defaultblok, blok default akan dieksekusi. Contoh:

Kode Keluaran konsol
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. Membandingkan switchdanif-else

Pernyataan tersebut switchagak mirip dengan if-elsepernyataan, hanya saja lebih rumit.

Anda selalu dapat menulis ulang kode pernyataan switchsebagai beberapa ifpernyataan. Contoh:

Kode dengan sakelar Kode dengan 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");
}

Kode di sebelah kiri akan berfungsi sama persis dengan kode di sebelah kanan.

Rantai beberapa if-elsepernyataan lebih disukai ketika sebuah ifpernyataan berisi berbagai ekspresi kompleks dalam setiap kasus terpisah.



5. Ekspresi apa yang dapat digunakan dalam sebuah switchpernyataan?

Tidak semua tipe dapat digunakan sebagai caselabel dalam switchpernyataan. Anda dapat menggunakan literal dari jenis berikut:

  • tipe bilangan bulat: byte, short, int,long
  • char
  • String
  • enumjenis apa pun

Anda tidak dapat menggunakan jenis lain sebagai label kasus.

Contoh penggunaan pernyataan enumdi dalam 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;
}

Catatan: Jika Anda menggunakan pernyataan enumdi dalam switch, Anda tidak perlu menuliskan nama kelas di depan setiap nilai pada caselabel. Cukup tulis nilainya saja.