CodeGym /Java Blog /Acak /String Java sama dengan()
John Squirrels
Level 41
San Francisco

String Java sama dengan()

Dipublikasikan di grup Acak
Membandingkan objek untuk kesetaraan adalah salah satu operasi pemrograman yang paling penting. Namun, meskipun jelas dalam dunia numerik, tidak selalu jelas bagaimana membandingkan tipe data lainnya. Kelas Objek Java , yang dasar, mendefinisikan metode sama dengan() dan membandingkanTo() untuk perbandingan. Kelas string menggantikan metode equal() -nya . Metode Java String sama dengan() membandingkan dua string menurut isinya. Tanda tangan metode string sama dengan () terlihat seperti ini:
public boolean equals(Object anotherObject)
Metode string sama dengan () membandingkan string dengan objek yang ditentukan. Jika stringnya sama, maka hasilnya benar, jika tidak maka salah. Anda mungkin bertanya-tanya mengapa tidak membandingkan string menggunakan operator perbandingan == ? Sebenarnya hal ini juga bisa saja terjadi, namun hasilnya akan sedikit berbeda. Faktanya adalah operator == membandingkan alamat di memori. Jadi jika s1 == s2 mengembalikan true , kedua string ini memiliki alamat yang sama di memori. Pada saat yang sama, sama dengan memeriksa isi string untuk kesetaraan. String Java sama dengan() - 1Mari kita ambil contoh membandingkan dua string.
public class StringEqualsTest {
   //program to test Java equals() method
   public static void main(String[] args) {
       String myString1 = "here is my favorite string";
       String myString2 = "here is my favorite string"; //this string is the same as the previous one, at least we think so
       String myString3 = "here is My favorite string"; //this string looks a little bit like previous two, but the first letter is big M instead of small m
       String myString4 = new String("here is my favorite string");
//here we create a String in an object manner… Why? Find out soon
       String myString5 = "equals to myString1? No, not at all..."; //here we have absolutely different string. Just for fun
    //let’s compare myString1 with myString2 using “==” operator
       System.out.println(myString1 == myString2); //true
    //let’s compare myString1 with myString4 using “==” operator
       System.out.println(myString1 == myString4); //false
//and now we are going to use equals() method to compare myString1 with myString4, myString2 and myString5
     System.out.println(myString1.equals(myString4));//true
       System.out.println(myString1.equals(myString2));//true
       System.out.println(myString1.equals(myString5)); //false

   }
}
Output dari program ini adalah:
benar salah benar benar salah
Mari kita lihat lebih dekat apa yang terjadi di sini. Saat kita membuat string, string tersebut ditempatkan di kumpulan string, area khusus di memori. String menempati sebagian besar objek dalam program besar apa pun. Jadi untuk menghemat memori, String Pool telah dibuat, di mana string dengan teks yang Anda butuhkan ditempatkan. Tautan yang baru dibuat kemudian merujuk ke area memori yang sama, tidak perlu mengalokasikan memori tambahan setiap saat. Jika Anda membuat string tanpa operator baru, itulah saat Anda menulis
String  myStringName = "...........................................",
atau semacamnya, program memeriksa apakah ada String dengan teks seperti itu di kumpulan String. Jika ya, tidak ada String baru yang akan dibuat. Dan link baru akan menunjuk ke alamat yang sama di String Pool dimana String tersebut sudah disimpan. Jadi ketika kami menulis di program
String myString1 = "here is my favorite string";
String myString2 = "here is my favorite string";
referensi myString1 menunjuk ke tempat yang persis sama di memori dengan myString2 . Perintah pertama membuat string baru di String Pool dengan teks yang kita butuhkan, dan ketika sampai pada perintah kedua, perintah tersebut hanya merujuk ke area memori yang sama dengan myString1 . Tapi string myString4 dibuat sebagai objek menggunakan operator baru . Operator ini mengalokasikan area baru di memori untuk suatu objek saat objek tersebut dibuat. Sebuah string dibuat dengan yang baru
String myString1 = new String ("here is my favorite string");
String myString2 = new String ("here is my favorite string");
tidak masuk ke dalam String Pool, tetapi menjadi objek terpisah, meskipun teksnya benar-benar cocok dengan string yang sama dari String Pool. Selain itu, jika kita membandingkan string menggunakan metode String sama dengan() , yang akan diperiksa bukan alamatnya, tetapi isi string, urutan karakter dalam string. Dan jika teks dalam string sama, tidak masalah bagaimana teks tersebut dibuat dan di mana disimpan, di String Pool, atau di area memori terpisah. Itu sebabnya myString1 , myString2 dan myString4 setara dalam perbandingan ini. Ngomong-ngomong, pernahkah Anda memperhatikan bahwa metode String sama dengan() memungkinkan Anda membandingkan string dengan benar dengan peka huruf besar-kecil? Artinya, jika kita membandingkan string "string saya" dengan string "String saya" dan "STRING SAYA" kita mendapatkan false.
public class StringEqualsTest {

   public static void main(String[] args) {

       String myString1 = new String ("here is my favorite string");
       String myString2 = new String ("here is My favorite string");
       String myString3 = new String("HERE IS MY FAVORITE STRING");

       System.out.println(myString1.equals(myString2)); //false because first string myString1 has small m and myString2 has big M instead
       System.out.println(myString1.equals(myString3));//false because myString1 is in lowercase while myString3 is in uppercase

   }
}
Outputnya ada di sini:
salah salah
Untuk membandingkan string dengan cara yang tidak peka huruf besar/kecil, Java memiliki metode yang sangat mirip dengan same :
boolean equalsIgnoreCase​(String anotherString)
Mari kita gunakan dalam contoh kita.
public class StringEqualsTest {

   public static void main(String[] args) {

       String myString1 = new String ("here is my favorite string");
       String myString2 = new String ("here is My favorite string");
       String myString3 = new String("HERE IS MY FAVORITE STRING");
     /* here we are going to use the brother of equals() method, equalsIgnoreCase(). It can help to check user input when case isn’t
important */
       System.out.println(myString1.equalsIgnoreCase(myString2));

       System.out.println(myString1.equalsIgnoreCase(myString3));

   }
}
Sekarang hasilnya adalah:
betul betul
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION