logo

Java String intern()

The Java String klasa pripravnik() metoda vraća internirani niz. Vraća kanonsku reprezentaciju niza.

java konstante

Može se koristiti za vraćanje niza iz memorije ako ga je stvorila nova ključna riječ. Stvara točnu kopiju objekta niza gomile u String Constant Pool-u.

Potpis

Signatura metode intern() dana je u nastavku:

 public String intern() 

Povratak

internirani niz

Potreba i rad metode String.intern().

Kada se niz kreira u Javi, on zauzima memoriju u hrpi. Također, znamo da je klasa String nepromjenjiva. Stoga, kad god stvorimo niz koristeći novu ključnu riječ, nova memorija se dodjeljuje u gomili za odgovarajući niz, što je neovisno o sadržaju niza. Razmotrite sljedeći isječak koda.

 String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false 

Naredba println ispisuje false jer je zasebna memorija dodijeljena za svaki literal niza. Stoga se u memoriji stvaraju dva nova string objekta, tj. str i str1. koji ima različite reference.

tuple java

Znamo da je stvaranje objekta skupa operacija u Javi. Stoga, kako bi uštedjeli vrijeme, programeri Jave smislili su koncept String Constant Pool (SCP). SCP je područje unutar heap memorije. Sadrži jedinstvene nizove. Kako bismo stringove stavili u skup nizova, potrebno je pozvati pripravnik() metoda. Prije stvaranja objekta u skupu nizova, JVM provjerava da li je niz već prisutan u skupu ili ne. Ako je niz prisutan, vraća se njegova referenca.

 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 

U gornjem isječku koda, metoda intern() poziva se na objekte String. Stoga se memorija dodjeljuje u SCP-u. Za drugu naredbu, ne stvara se novi string objekt jer je sadržaj str i str1 isti. Stoga se referenca objekta stvorenog u prvoj izjavi vraća za str1. Dakle, str i str1 pokazuju na istu memoriju. Dakle, naredba print ispisuje true.

Primjer metode Java String intern().

Naziv datoteke: InternExample.java

 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 }} 
Testirajte sada

Izlaz:

naučiti selen
 false true 

Primjer 2 metode Java String intern().

Pogledajmo još jedan primjer da bismo razumjeli koncept string intern.

Naziv datoteke: 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 } } 
Testirajte sada

Izlaz:

 true false true false true false 

Bodovi za pamćenje

Slijede neke važne točke koje treba zapamtiti u vezi s metodom intern():

1) String literal uvijek poziva intern() metodu, bez obzira spominje li se intern() metoda uz string literal ili ne. Na primjer,

 String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true 

2) Kad god kreiramo String objekt koristeći novi ključna riječ, stvaraju se dva objekta. Na primjer,

sqrt java matematika
 String str = new ('Hello World'); 

Ovdje se jedan objekt stvara u memoriji gomile izvan SCP-a zbog upotrebe ključne riječi new. Kao što imamo i string literal ('Hello World'); stoga se jedan objekt stvara unutar SCP-a, pod uvjetom da doslovni 'Hello World' već nije prisutan u SCP-u.