sakelar, kasing, default - 1

"Hai, Amigo!"

"Hai, Bilaabo! Senang bertemu denganmu lagi. Hanya ceramahmu yang begitu bagus dan mudah dipahami. Tidak seperti Java Memory Model ini."

"Ya, Bilaabo tahu bagaimana memilih pelajaran. Hari ini saya akan memberi tahu Anda tentang pernyataan beralih."

"Kurasa seseorang sudah memberitahuku tentang itu."

"Ellie yang melakukannya. Jadi, Amigo tidak mau mendengar pelajaran tentang pernyataan peralihan? Mungkin kamu akan mulai mengajar pelajaranmu sendiri?"

"Tidak, saya ingin, saya ingin. Mari kita dengar tentang pernyataan peralihan."

"Oke. Di Jawa, ada sesuatu yang disebut pernyataan sakelar. Lebih mudah bila Anda perlu melakukan tindakan tertentu tergantung pada berbagai nilai dari beberapa variabel."

Contoh dengan saklar Kode yang setara
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");
}

Pernyataan switch memungkinkan Anda melompat ke potongan kode yang diinginkan jika variabel yang diteruskan cocok dengan nilai yang mengikuti kata kunci case.

Jika i adalah 1, maka eksekusi akan melompat ke baris bertanda «kasus 1».

Jika i adalah 2, maka eksekusi akan melompat ke baris bertanda «kasus 2».

Jika i adalah 3, maka eksekusi akan melompat ke baris bertanda «kasus 3».

"Jika tidak ada lompatan ke salah satu kasus, maka blok «default» dijalankan."

"Begitu. Dan di sebelah kanan adalah logika yang sama, tetapi diimplementasikan menggunakan pernyataan if?"

"Ya."

"Dan ada apa dengan kata 'break'? Kamu bilang itu hanya bisa digunakan berulang-ulang?"

"Ya, dan ini. Saat pernyataan break dijalankan, kami segera keluar dari sakelar ."

"Tapi jika pernyataan break dihapus, maka semua baris di dalam switch akan dieksekusi sampai akhir."

Contoh Keluaran (untuk i = 1) Keluaran (untuk 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"); }
satu
dua
tiga
banyak
dua
tiga
banyak

"Sebenarnya, case adalah label dalam kode. Dalam pernyataan switch, kita melompat ke label berikutnya dan mulai mengeksekusi semua kode hingga akhir switch, atau sampai kita menemukan pernyataan break."

"Jadi, jika kita tidak menulis break, maka baris yang kita lompati akan dieksekusi, diikuti oleh semua baris lainnya sampai tanda kurung tutup. Betul?"

"Ya."

"Sepotong kue. Tapi saya lebih suka menggunakan pernyataan if. Mereka tidak memiliki pernyataan istirahat yang tidak berguna ini."

"Memang benar bahwa pernyataan if seringkali lebih ringkas. Tapi pernyataan peralihan terkadang lebih mudah dibaca."

"Membandingkan:"

Contoh dengan saklar Kode yang setara
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"
}

"Saya tidak akan mengatakan bahwa itu lebih mudah dibaca."

"Oke, tapi bagaimana dengan contoh ini?"

Contoh dengan saklar Kode yang setara
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, contoh Anda sepertinya kurang tepat. Jadi, saya bisa menghilangkan pernyataan break jika saya menggunakan return?"

"Betul. Pernyataan kembali akan segera keluar dari metode."

"Tampaknya pernyataan if selalu lebih kompak. Tapi pernyataan peralihan ternyata lebih mudah dibaca kali ini."

"Fiuh, akhirnya."

"Satu hal lagi. Anda tidak harus menulis default di bagian akhir. Jika tidak, maka tidak akan terjadi apa-apa jika tidak ada label yang cocok."

"Uh, tepatnya. Seperti if-else, tapi bisa dibaca—jauh lebih mudah dibaca!"

"Bagus. Saya senang Anda menyukai pelajaran saya."

"Oh, saya hampir lupa. Awalnya, Anda hanya bisa menggunakan tipe primitif dan enum dalam pernyataan peralihan. Tapi sekarang mereka telah menambahkan dukungan untuk Strings."

"Maksudmu aku yang menulis ini?"

Contoh
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

"Ya. Nyaman, kan?"

"Ya. Ganti pernyataan itu bagus!"