Rumah >Java >javaTutorial >Mengapa \'==\' Gagal Apabila Membandingkan Rentetan dalam Java?

Mengapa \'==\' Gagal Apabila Membandingkan Rentetan dalam Java?

Linda Hamilton
Linda Hamiltonasal
2024-11-30 04:40:14112semak imbas

Why Does

String Comparison Pitfall dengan == dalam Java

Di Java, apabila berurusan dengan rentetan, membandingkannya menggunakan operator kesamaan (==) boleh membawa kepada hasil yang tidak dijangka. Walaupun dua rentetan kelihatan sama, perbandingan mungkin menghasilkan palsu. Memahami sebab di sebalik tingkah laku ini adalah penting untuk mengelakkan ralat.

Inti isu terletak pada seni bina berorientasikan objek Java. Rentetan dalam Java disimpan sebagai objek dalam ingatan, dan pengendali kesamaan (==) membandingkan rujukan kepada objek ini dan bukannya kandungannya. Oleh itu, walaupun nilai rentetan sebenar adalah sama, alamat rujukan boleh berbeza, menghasilkan perbandingan palsu.

Untuk membandingkan nilai rentetan dengan tepat, seseorang harus menggunakan kaedah equals() yang disediakan oleh String kelas. Kaedah ini secara langsung membandingkan kandungan rentetan, memastikan pengesanan kesaksamaan sebenar. Adalah penting untuk ambil perhatian bahawa kaedah equals() harus ditindih dalam kelas tersuai yang memerlukan perbandingan berasaskan nilai.

Contoh:

Pertimbangkan coretan kod berikut:

String[] parts = {"231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"};

if ("231" == parts[0]) {
  // Comparison using ==
  System.out.println("False! Why?");
}

if ("231".equals(parts[0])) {
  // Comparison using equals()
  System.out.println("True");
}

Perbandingan pertama menggunakan == menghasilkan palsu kerana ia membandingkan rujukan objek, manakala perbandingan kedua menggunakan sama dengan() betul mengembalikan benar kerana ia menilai nilai rentetan. Adalah penting untuk menggunakan equals() untuk perbandingan berasaskan nilai untuk mengelakkan keputusan yang salah dan memastikan hasil logik yang tepat.

Atas ialah kandungan terperinci Mengapa \'==\' Gagal Apabila Membandingkan Rentetan dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn