IL Classe String Java stagista() Il metodo restituisce la stringa internata. Restituisce la rappresentazione canonica della stringa.
gestione delle eccezioni java
Può essere utilizzato per restituire una stringa dalla memoria se viene creata da una nuova parola chiave. Crea una copia esatta dell'oggetto stringa heap nel pool di costanti di stringhe.
Firma
La firma del metodo intern() è riportata di seguito:
public String intern()
ritorna
corda internata
La necessità e il funzionamento del metodo String.intern()
Quando una stringa viene creata in Java, occupa la memoria nell'heap. Inoltre, sappiamo che la classe String è immutabile. Pertanto, ogni volta che creiamo una stringa utilizzando la parola chiave new, nell'heap viene allocata nuova memoria per la stringa corrispondente, indipendentemente dal contenuto dell'array. Considera il seguente frammento di codice.
String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false
L'istruzione println stampa false perché viene allocata memoria separata per ogni stringa letterale. Pertanto, nella memoria vengono creati due nuovi oggetti stringa, ovvero str e str1. che contiene riferimenti diversi.
10 milioni
Sappiamo che creare un oggetto è un'operazione costosa in Java. Pertanto, per risparmiare tempo, gli sviluppatori Java hanno inventato il concetto di String Constant Pool (SCP). L'SCP è un'area all'interno della memoria heap. Contiene le stringhe univoche. Per inserire le stringhe nello string pool, è necessario chiamare il file stagista() metodo. Prima di creare un oggetto nel pool di stringhe, la JVM controlla se la stringa è già presente nel pool oppure no. Se la stringa è presente, viene restituito il suo riferimento.
String str = new String('Welcome to JavaTpoint').intern(); // statement - 1 String str1 = new String('Welcome to JavaTpoint').intern(); // statement - 2 System.out.println(str1 == str); // prints true
Nel frammento di codice precedente, il metodo intern() viene richiamato sugli oggetti String. Pertanto, la memoria viene allocata nell'SCP. Per la seconda istruzione, non viene creato alcun nuovo oggetto stringa poiché il contenuto di str e str1 è lo stesso. Pertanto, per str1 viene restituito il riferimento dell'oggetto creato nella prima istruzione. Pertanto, str e str1 puntano entrambi alla stessa memoria. Pertanto, l'istruzione print viene stampata come vera.
Esempio di metodo Java String intern()
Nome del file: InternExample.java
cannella contro mate
public class InternExample{ public static void main(String args[]){ String s1=new String('hello'); String s2='hello'; String s3=s1.intern();//returns string from pool, now it will be same as s2 System.out.println(s1==s2);//false because reference variables are pointing to different instance System.out.println(s2==s3);//true because reference variables are pointing to same instance }}Provalo adesso
Produzione:
false true
Metodo Java String intern() Esempio 2
Vediamo un altro esempio per comprendere il concetto di stringa interna.
Nome del file: InternExample2.java
public class InternExample2 { public static void main(String[] args) { String s1 = 'Javatpoint'; String s2 = s1.intern(); String s3 = new String('Javatpoint'); String s4 = s3.intern(); System.out.println(s1==s2); // True System.out.println(s1==s3); // False System.out.println(s1==s4); // True System.out.println(s2==s3); // False System.out.println(s2==s4); // True System.out.println(s3==s4); // False } }Provalo adesso
Produzione:
true false true false true false
Punti da ricordare
Di seguito sono riportati alcuni punti importanti da ricordare riguardo al metodo intern():
costanti Java
1) Una stringa letterale invoca sempre il metodo intern(), indipendentemente dal fatto che si menzioni il metodo intern() insieme alla stringa letterale o meno. Per esempio,
String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true
2) Ogni volta che creiamo un oggetto String utilizzando il file nuovo parola chiave, vengono creati due oggetti. Per esempio,
String str = new ('Hello World');
In questo caso, viene creato un oggetto nella memoria heap all'esterno dell'SCP a causa dell'utilizzo della nuova parola chiave. Poiché abbiamo anche la stringa letterale ('Hello World'); pertanto, viene creato un oggetto all'interno dell'SCP, a condizione che il letterale 'Hello World' non sia già presente nell'SCP.