Apa perbedaan antara pernyataan switch di Java dan C#?

Jan 22, 2026

Tinggalkan pesan

Hai! Sebagai pemasok saklar, saya telah menangani segala macam saklar di dunia industri. Namun hari ini, saya akan beralih sedikit dan membicarakan sesuatu yang berbeda - perbedaan antara pernyataan switch di Java dan C#. Ini mungkin tampak agak aneh bagi saya, tapi percayalah, memahami konsep pemrograman ini sebenarnya dapat memberi Anda perspektif yang lebih baik tentang cara kerja sistem yang berbeda, dan itu sangat berguna dalam bisnis switch.

Mari kita mulai dengan dasar-dasarnya. Pernyataan switch di Java dan C# adalah pernyataan aliran kontrol yang memungkinkan Anda memilih salah satu dari banyak blok kode untuk dieksekusi berdasarkan nilai ekspresi. Ini seperti persimpangan jalan multi arah; tergantung pada nilai mana yang Anda hadapi, Anda mengambil jalan yang berbeda.

Sintaks dan Struktur

Di Java, sintaks dasar pernyataan switch terlihat seperti ini:

6GK5008-0BA10-1AB2 Electrical Switch XB0086GK5008-0BA10-1AB2 Electrical Switch

switch(ekspresi) { nilai kasus1: // kode yang akan dieksekusi jika ekspresi == nilai1 rusak; case value2: // kode yang akan dieksekusi jika ekspresi == value2 rusak; default: // kode yang akan dieksekusi jika ekspresi tidak cocok dengan kasus apa pun }

Ituekspresibisa bertipebyte,pendek,arang,ke dalam,enumjenis,Rangkaian(sejak Java 7), dan beberapa kelas pembungkus sejenisnyabyte,Pendek,Karakter, DanBilangan bulat. Setiapkasusdiikuti oleh nilai tertentu, danmerusakpernyataan digunakan untuk keluar dari blok switch setelah kecocokan ditemukan. Jika Anda lupamerusak, eksekusi akan "gagal" ke kasus berikutnya, yang dapat menyebabkan beberapa perilaku tidak terduga.

Di C#, sintaksnya sangat mirip:

switch(ekspresi) { nilai kasus1: // kode yang akan dieksekusi jika ekspresi == nilai1 rusak; case value2: // kode yang akan dieksekusi jika ekspresi == value2 rusak; default: // kode yang akan dieksekusi jika ekspresi tidak cocok dengan kasus apa pun }

Namun, ituekspresidi C# bisa bertipepenggantian,byte,pendek,pendek,ke dalam,tidak,panjang,kepala,arang,rangkaian,enumtipe, dan versi nullable dari tipe nilai ini. Rentang ini lebih luas dibandingkan Java, sehingga memberi Anda lebih banyak fleksibilitas saat bekerja dengan tipe data berbeda.

Jatuh - Melalui Perilaku

Seperti yang saya sebutkan sebelumnya, Java memiliki perilaku gagal jika Anda tidak menggunakanmerusakpenyataan. Misalnya:

int angka = 1; switch(angka) { kasus 1: System.out.println("Kasus 1"); kasus 2: System.out.println("Kasus 2"); merusak; default: System.out.println("Kasus bawaan"); }

Namun dalam kode inidi sebuahadalah 1, "Case 1" dan "Case 2" akan dicetak karena tidak adamerusaksetelah yang pertamakasus.

C#, di sisi lain, tidak mengizinkan fall - through secara default. Jika Anda mencoba menulis kode tanpa amerusakatau apergipernyataan di akhir akasusblok, Anda akan mendapatkan kesalahan kompilasi. Ini adalah fitur keamanan yang membantu mencegah bug yang disebabkan oleh terjatuh secara tidak sengaja. Namun jika Anda benar - benar ingin menerapkan fall - through di C#, Anda dapat menggunakanpergipenyataan. Misalnya:

int angka = 1; switch(num) { kasus 1: Console.WriteLine("Kasus 1"); pergi ke kasus 2; kasus 2: Console.WriteLine("Kasus 2"); merusak; default: Console.WriteLine("Kasus bawaan"); }

Pencocokan Pola (C# 7.0 dan yang lebih baru)

Salah satu perbedaan besar antara Java dan C# dalam hal pernyataan switch adalah bahwa C# memperkenalkan pencocokan pola dalam pernyataan switch-nya mulai dari C# 7.0. Pencocokan pola memungkinkan Anda mencocokkan tidak hanya pada nilai sederhana namun juga pada kondisi yang lebih kompleks.

Misalnya, Anda dapat menggunakan pola tipe:

objek obj = "Halo"; switch(obj) { case string s: Console.WriteLine($"Ini adalah string: {s}"); merusak; case int i: Console.WriteLine($"Ini bilangan bulat: {i}"); merusak; default: Console.WriteLine("Ada hal lain"); }

Anda juga dapat menggunakan pola konstan dan pola relasional di versi C# yang lebih baru. Java belum memiliki kemampuan pencocokan pola tingkat lanjut seperti ini dalam pernyataan switchnya.

Pertimbangan Kinerja

Dalam hal kinerja, Java dan C# mengoptimalkan pernyataan switch dengan cukup baik. Di Jawa, ketikakasusnilainya adalah bilangan bulat berurutan, kompiler dapat menggunakan asaklar mejainstruksi, yang menyediakan akses waktu-konstan ke yang sesuaikasusmemblokir. Untuk nilai yang tidak berurutan, digunakan asaklar pencarianinstruksi, yang memiliki kompleksitas waktu logaritmik.

C# juga memiliki optimasi serupa. Kompiler mencoba menggunakan tabel lompat untuk nilai berurutan, yang sangat cepat. Untuk nilai yang tidak berurutan menggunakan algoritma pencarian biner yang juga memiliki kinerja yang baik.

Aplikasi Dunia Nyata dalam Bisnis Switch

Sekarang, Anda mungkin bertanya-tanya bagaimana semua hal pemrograman ini berhubungan dengan menjadi pemasok switch. Baiklah, pikirkanlah. Dalam sistem otomasi industri, sering kali terdapat program kontrol yang ditulis dalam Java atau C#. Program-program ini menggunakan pernyataan saklar untuk membuat keputusan berdasarkan pembacaan sensor atau masukan pengguna.

Misalnya, jika Anda menggunakan aD4A - 3101N Sakelar Batas Tujuan Umum, program kontrol mungkin menggunakan pernyataan saklar untuk menentukan tindakan apa yang harus diambil berdasarkan apakah saklar terbuka atau tertutup. Jika sakelar ditutup, motor dapat dihidupkan; jika terbuka, bisa menghentikan motor.

Demikian pula,6GK5008 - 0BA10 - 1AB2 Skala Sakelar Listrik XB008mungkin digunakan dalam program kontrol terkait jaringan. Program ini dapat menggunakan pernyataan switch untuk menangani status jaringan berbeda yang dilaporkan oleh switch, seperti operasi normal, status kesalahan, atau mode pemeliharaan.

Dan ituD4A - 4501N D4A - 4510N Sakelar Batasbisa menjadi bagian dari sistem kontrol lengan robot. Program kendali dapat menggunakan pernyataan saklar untuk memutuskan bagaimana lengan robot harus bergerak berdasarkan posisi yang terdeteksi oleh saklar batas.

Kesimpulan

Kesimpulannya, meskipun pernyataan switch di Java dan C# memiliki banyak kesamaan dalam hal fungsionalitas dasar, terdapat beberapa perbedaan utama. C# memiliki tipe data yang lebih luas untuk ekspresi sakelar, tidak mengizinkan kegagalan secara default, dan memiliki kemampuan pencocokan pola tingkat lanjut. Sebaliknya, Java mempunyai perilaku gagal yang lebih permisif.

Baik Anda seorang pemrogram yang menulis program kontrol untuk sakelar industri atau pembeli yang mencari sakelar yang tepat untuk proyek Anda, memahami perbedaan ini dapat membantu Anda membuat keputusan yang lebih baik. Jika Anda sedang mencari sakelar berkualitas tinggi, saya ingin mengobrol dengan Anda. Kami memiliki berbagai macam saklar untuk memenuhi kebutuhan Anda, dan saya di sini untuk membantu Anda menemukan saklar yang paling cocok untuk aplikasi Anda. Jadi, jangan ragu untuk menghubungi dan memulai diskusi pengadaan.

Referensi

  • "Jawa Efektif" oleh Joshua Bloch
  • "C# secara Mendalam" oleh Jon Skeet

Kirim permintaan