Java String Intern () Metode: Panduan Lengkap – Codewithaden

String Interning adalah metode menyimpan hanya satu salinan dari setiap nilai string yang berbeda, yang harus tidak dapat diubah. Dengan menerapkan String.Intern () pada beberapa string akan memastikan bahwa semua string memiliki konten yang sama berbagi memori yang sama.

Java String Intern ()

Java String Intern () adalah metode bawaan yang mengembalikan warga asli metode th Rangkaian kelas. Metode magang () diimplementasikan dalam pengkodean asli menggunakan Antarmuka asli Java (JNI).

Itu Jni Spesifikasi mengatur aturan dan pedoman untuk mengimplementasikan metode asli; Ini termasuk aturan untuk konversi tipe data, misalnya, ke dan dari Java dan aplikasi asli.

Sintaksis

public native String intern()
 

Dua cara berbeda untuk membuat objek string di java

Untuk memahami pekerjaan magang () Metode dalam Java, penting untuk memahami berbagai cara di mana objek string dapat dibuat di Java dan bagaimana alokasi memori terjadi dalam hal yang sama.

Catatan: Ingatlah bahwa operator == untuk objek string membandingkan lokasi memori dari dua objek dan bukan nilai.

Lihat contoh pertama.

public class Example1 {
  public static void main(String[] args) {
    String str1 = new String("sample string");
    String str2 = "sample string";

    System.out.println(str1 == str2);
  }
} 

Keluaran

Java

Dalam contoh di atas, STR1 dialokasikan memori dalam tumpukan, sedangkan STR2 pergi ke kumpulan konstanta string; Karena itu, mereka memiliki lokasi memori yang berbeda.

Lihat contoh kedua.

public class Example2 {
  public static void main(String[] args) {
    String str1 = "sample string";
    String str2 = "sample string";

    System.out.println(str1 == str2);
  }
} 

Keluaran

Java

Di sini, STR1 dan STR2 ditambahkan ke kumpulan string konstan, dan oleh karena itu, mereka memiliki lokasi memori yang sama.

Java String Constant Pool

Setiap kali objek string, STR1 ditambahkan di Pool konstan string , yang dipertahankan oleh Rangkaian kelas, kumpulan memegang konstanta string itu sehingga jika string lain str2 dengan nilai yang sama dibuat, memori tambahan tidak dialokasikan untuk STR2 (kecuali diminta secara khusus oleh baru operator) dan diberikan referensi ke objek yang sudah ada di kumpulan.

Metode Java Intern ()

Jawa magang () Metode di Java, setelah dipanggil pada objek string, memeriksa Pool konstan string untuk objek string dengan nilai yang sama.

Jika objek string seperti itu ditemukan, maka referensi ke objek itu dikembalikan. Jika tidak, objek string dengan nilai yang diberikan ditambahkan ke kumpulan konstanta string, dan referensi ke objek string yang baru dibuat ini dikembalikan oleh metode magang ().

Java

Sintaks: Publik Native String Intern ()

Kembali: Referensi ke objek string dengan nilai yang sama dari kumpulan konstanta string. Jika objek string seperti itu tidak ditemukan di kolam, itu membuat objek baru di kolam dan mengembalikan referensi ke sana.

Metode operator == vs sama () untuk objek string

Sebelum melanjutkan, inilah penarikan cepat dari perbedaan antara penggunaan == Metode operator dan equals () untuk membandingkan objek string di java.

Lihat contoh kode berikut.

public class Example3 {
  public static void main(String[] args) {
    String str1 = new String("sample string");
    String str2 = "sample string";

    System.out.println(str1 == str2);
    System.out.println(str1.equals(str2));
  }
} 

Keluaran

The

Seperti disebutkan di atas, operator == membandingkan lokasi memori dari dua string, sedangkan metode Equals () membandingkan nilai -nilai dari dua string.

Di mana mereka digunakan dalam konteks ini adalah sebagai berikut.

  1. == Operator: Untuk memeriksa apakah ada objek string di kumpulan string konstanta atau tidak.
  2. Equals () Metode: Untuk membandingkan nilai yang ada dalam kumpulan konstanta string dengan nilai objek string yang memohon metode magang ().

Lihat contoh kerja berikut.

public class Example4 {
  public static void main(String[] args) {
    String str1 = new String("sample string");
    String str2 = "sample string";
    String str3 = "sample string";

    System.out.println(str1 == str2);
    System.out.println(str2 == str3);

    str1 = str1.intern();

    System.out.println(str1 == str2);
  }
}
 

Keluaran

equals()

Dalam contoh di atas, dalam pernyataan tersebut str1 = str1.intern (), Metode intern () memeriksa kumpulan konstanta string untuk objek string yang nilainya cocok dengan objek string str1.

Karena ada nilai seperti itu, referensi untuk itu dikembalikan, dan oleh karena itu, ketika lokasi memori dibandingkan untuk kedua kalinya, str1 == str2 kembali benar.

Sekarang, itu ditunjukkan pada contoh pertama Bagaimana kedua string terletak di lokasi memori yang berbeda. Menindaklanjuti contoh itu, pertimbangkan:

public class Example5 {
  public static void main(String[] args) {
    String str1 = new String("sample string");
    String str2 = str1.intern();
    String str3 = "sample string";

    System.out.println(str2 == str3);
  }
} 

Keluaran

Interning

Di sini, STR1 dialokasikan memori dalam tumpukan. Jadi ketika str1.intern () dipanggil, tidak ada objek string dengan nilai “string sampel” di kumpulan konstanta string.

Jadi, objek string dengan nilai ini dibuat di kumpulan, dan referensi untuk itu dikembalikan oleh metode magang (), yang disimpan dalam str2. Oleh karena itu, pada membandingkan lokasi memori STR2 dan STR3, mereka ditemukan sama dengan mereka berdua ada di kumpulan konstanta string.

Ketika STR3 dibuat, objek string dengan nilai yang sama sudah ada di kumpulan konstanta string, dan oleh karena itu, duplikasi tidak dilakukan [Rujuk bagian: Java String Constant Pool].

Akhirnya, contoh metode Java String Intern () sudah berakhir.

Pos terkait

Java String Replace ()

Java String ReplaceAll ()

Format string java ()

Java String getBytes ()

Java String TolowerCase ()

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

Your email address will not be published. Required fields are marked *