Java String intern ()

Il metodo Java String intern () restituisce una rappresentazione canonica dell'oggetto stringa.

La sintassi del intern()metodo delle stringhe è:

 string.intern()

Qui, la stringa è un oggetto della Stringclasse.

intern () Parametri

Il intern()metodo non accetta parametri.

intern () Valore restituito

  • restituisce una rappresentazione canonica della stringa

Che cos'è Java String Interning?

L'internamento di stringhe garantisce che tutte le stringhe con lo stesso contenuto utilizzino la stessa memoria.

Supponiamo, abbiamo queste due stringhe:

 String str1 = "xyz"; String str2 = "xyz";

Poiché entrambi str1e str2hanno lo stesso contenuto, entrambe queste stringhe condivideranno la stessa memoria. Java internizza automaticamente le stringhe letterali.

Tuttavia, se crei stringhe utilizzando la newparola chiave, queste stringhe non condivideranno la stessa memoria. Per esempio,

 class Main ( public static void main(String() args) ( String str1 = new String("xyz"); String str2 = new String("xyz"); System.out.println(str1 == str2); // false ) )

Come puoi vedere da questo esempio, sia str1 che str2 hanno lo stesso contenuto. Tuttavia, non sono uguali perché non condividono la stessa memoria.

In questo caso, è possibile utilizzare manualmente il intern()metodo in modo che la stessa memoria venga utilizzata per stringhe con lo stesso contenuto.

Esempio: Java String intern ()

 class Main ( public static void main(String() args) ( String str1 = new String("xyz"); String str2 = new String("xyz"); // str1 and str2 doesn't share the same memory pool System.out.println(str1 == str2); // false // using the intern() method // now both str1 and str2 share the same memory pool str1 = str1.intern(); str2 = str2.intern(); System.out.println(str1 == str2); // true ) )

Come puoi vedere, sia str1 che str2 hanno lo stesso contenuto, ma inizialmente non sono uguali.

Quindi utilizziamo il intern()metodo in modo che str1 e str2 utilizzino lo stesso pool di memoria. Dopo aver usato intern(), str1 e str2 sono uguali.

Articoli interessanti...