Java - Ekspresi Switch

Halo semua, pemrogram Java masa depan! Hari ini, kita akan menyelam ke salah satu fitur yang paling menarik yang diperkenalkan di Java 12 dan ditingkatkan di Java 14: Ekspresi Switch. Sebagai guru ilmu komputer ramah yang tinggal di sekitar, saya di sini untuk memandu Anda melalui perjalanan ini, bahkan jika Anda belum pernah menulis satu baris kode sebelumnya. Jadi, tempatkan sabuk pengaman Anda dan mari kita mulai!

Java - Switch Expressions

Apa itu Ekspresi Switch?

Sebelum kita melompat ke ekspresi switch, mari kita singgah untuk mengerti apa itu pernyataan switch. Bayangkan Anda berada di sebuah toko es krim, dan tergantung pilihan rasa Anda, Anda mendapat topping yang berbeda. Itu hampir sama dengan apa yang dilakukan oleh pernyataan switch dalam pemrograman – itu memungkinkan Anda untuk menjalankan kode yang berbeda berdasarkan kondisi yang berbeda.

Sekarang, ekspresi switch mengambil konsep ini dan membuatnya lebih kuat dan ringkas. Mereka memungkinkan kita untuk memperlakukan seluruh blok switch sebagai sebuah ekspresi yang dapat mengembalikan nilai. Itu seperti meng-upgrade dari wadah es krim biasa menjadi sundaes deluxe!

Cara Lama: Pernyataan Switch Tradisional

Mari kita mulai dengan pernyataan switch tradisional untuk melihat bagaimana kita melakukan hal ini sebelumnya:

String hari = "MINGGU";
String jenisHari;

switch (hari) {
case "MINGGU":
case "SENIN":
case "SELASA":
case "RABU":
case "KAMIS":
jenisHari = "Hari kerja";
break;
case "JUMAT":
case "SABTU":
jenisHari = "Akhir minggu";
break;
default:
jenisHari = "Hari tidak valid";
}

System.out.println(jenisHari);

Dalam contoh ini, kita menentukan apakah hari adalah hari kerja atau akhir minggu. Perhatikan bahwa kita perlu menggunakan pernyataan break untuk mencegah fall-through, dan kita harus mendeklarasikan jenisHari di luar blok switch.

Cara Baru: Ekspresi Switch

Sekarang, mari kita lihat bagaimana kita dapat mencapai hasil yang sama menggunakan ekspresi switch:

String hari = "MINGGU";
String jenisHari = switch (hari) {
case "MINGGU", "SENIN", "SELASA", "RABU", "KAMIS" -> "Hari kerja";
case "JUMAT", "SABTU" -> "Akhir minggu";
default -> "Hari tidak valid";
};

System.out.println(jenisHari);

Wah! Lihatlah berapa banyak lebih rapi dan ringkas itu. Kita telah menggabungkan beberapa kasus, menghapus pernyataan break, dan mengassign langsung hasilnya ke jenisHari. Itu seperti membersihkan ruangan Anda – tiba-tiba semua menjadi rapi dan urut!

Ekspresi Switch Menggunakan Label "case L ->"

Sintaks panah (->) adalah fitur utama dari ekspresi switch. Ini memungkinkan kita untuk menyediakan cara ringkas untuk menentukan label kasus dan tindakan yang terkait dengannya. Mari kita lihat contoh lain:

int nomorHari = 3;
String namaHari = switch (nomorHari) {
case 1 -> "Senin";
case 2 -> "Selasa";
case 3 -> "Rabu";
case 4 -> "Kamis";
case 5 -> "Jumat";
case 6 -> "Sabtu";
case 7 -> "Minggu";
default -> "Nomor hari tidak valid";
};

System.out.println("Hari " + nomorHari + " adalah " + namaHari);

Dalam contoh ini, kita mengubah nomor hari ke nama hari yang berkorespondensinya. Sintaks panah membuat setiap kasus menjadi satu baris yang mudah dibaca. Itu seperti tanda arah yang menunjuk langsung ke jawaban yang benar!

Ekspresi Switch Menggunakan Pernyataan "case L:" dan Pernyataan "yield"

Terkadang, Anda mungkin perlu melakukan lebih dari hanya mengembalikan nilai sederhana dalam ekspresi switch Anda. Itu saat pernyataan yield menjadi berguna. Itu seperti mengatakan, "Saya sudah selesai dengan perhitungan saya, ini jawabannya!"

Mari kita lihat contoh:

int bulan = 8;
String musim = switch (bulan) {
case 12, 1, 2:
yield "Musim dingin";
case 3, 4, 5:
yield "Musim semi";
case 6, 7, 8:
yield "Musim panas";
case 9, 10, 11:
yield "Musim gugur";
default: {
String pesan = "Bulan tidak valid: " + bulan;
System.out.println(pesan);
yield "Tidak diketahui";
}
};

System.out.println("Musim untuk bulan " + bulan + " adalah " + musim);

Dalam contoh ini, kita menentukan musim berdasarkan bulan. Perhatikan bahwa kita menggunakan yield untuk mengembalikan nilai, khususnya di kasus default tempat kita melakukan sedikit lebih banyak pemrosesan.

Penggunaan Tingkat Lanjut: Ekspresi dalam Label Kasus

Salah satu fitur yang paling keren dari ekspresi switch adalah Anda dapat menggunakan ekspresi dalam label kasus. Itu seperti memberikan pernyataan switch Anda superpower! Ini adalah contoh:

record Orang(String nama, int umur) {}

Orang orang = new Orang("Alice", 25);

String tahapHidup = switch (orang) {
case Orang o when o.umur() < 13 -> "Anak";
case Orang o when o.umur() >= 13 && o.umur() < 20 -> "Remaja";
case Orang o when o.umur() >= 20 && o.umur() < 60 -> "Dewasa";
case Orang o when o.umur() >= 60 -> " Lansia";
default -> "Tidak diketahui";
};

System.out.println(orang.nama() + " adalah " + tahapHidup);

Dalam contoh ini, kita menggunakan record (fitur Java yang keren lainnya) untuk mewakili seseorang, dan kemudian menggunakan ekspresi switch dengan kondisi kompleks untuk menentukan tahap hidup mereka. Itu seperti memiliki pelatih hidup pribadi di kode Anda!

Kesimpulan

Ekspresi switch adalah alat yang kuat dalam Java yang dapat membuat kode Anda lebih mudah dibaca, ringkas, dan kurang error-prone. Ini seperti meng-upgrade dari ponsel lipat ke ponsel pintar – tiba-tiba, Anda dapat melakukan banyak hal lebih dengan sedikit usaha!

Ingat, pemrograman adalah tentang praktek. Jadi, jangan takut untuk bereksperimen dengan konsep ini. Coba buat ekspresi switch Anda sendiri, mainkan dengan skenario yang berbeda, dan yang paling penting, bersenang-senanglah dengan itu!

Sebagai penutup, ini adalah tabel ringkasan tentang metode utama yang kita diskusikan:

Metode Deskripsi
-> Sintaks panah untuk label kasus dan tindakan ringkas
yield Pernyataan untuk mengembalikan nilai dari ekspresi switch
case L when kondisi Pematching pola dalam label kasus

Selamat coding, dan semoga switch Anda selalu menyatakan diri dengan jelas!

Credits: Image by storyset