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!