logo

Java String stagiair()

De Java String-klasse intern() methode retourneert de interne string. Het retourneert de canonieke representatie van string.

knop in het midden css

Het kan worden gebruikt om een ​​tekenreeks uit het geheugen terug te halen als deze door een nieuw trefwoord is gemaakt. Het creëert een exacte kopie van het heap string-object in de String Constant Pool.

Handtekening

De handtekening van de intern() methode wordt hieronder gegeven:

 public String intern() 

Geeft terug

geïnterneerde string

De noodzaak en werking van de String.intern() Methode

Wanneer een string in Java wordt gemaakt, neemt deze geheugen in de heap in beslag. We weten ook dat de klasse String onveranderlijk is. Daarom wordt, telkens wanneer we een string maken met het nieuwe sleutelwoord, nieuw geheugen toegewezen in de heap voor de corresponderende string, wat ongeacht de inhoud van de array is. Bekijk het volgende codefragment.

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

De println-instructie geeft false weer omdat er voor elke letterlijke tekenreeks apart geheugen wordt toegewezen. Er worden dus twee nieuwe stringobjecten in het geheugen aangemaakt, namelijk str en str1. dat verschillende referenties bevat.

tekenreeks concat java

We weten dat het maken van een object een kostbare operatie is in Java. Om tijd te besparen bedachten Java-ontwikkelaars daarom het concept van String Constant Pool (SCP). Het SCP is een gebied binnen het heap-geheugen. Het bevat de unieke strings. Om de strings in de stringpool te plaatsen, moet je de intern() methode. Voordat een object in de stringpool wordt aangemaakt, controleert de JVM of de string al in de pool aanwezig is of niet. Als de string aanwezig is, wordt de verwijzing ervan geretourneerd.

 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 

In het bovenstaande codefragment wordt de methode intern() aangeroepen op de String-objecten. Daarom wordt het geheugen toegewezen in het SCP. Voor de tweede instructie wordt geen nieuw stringobject gemaakt omdat de inhoud van str en str1 hetzelfde is. Daarom wordt de referentie van het object dat in de eerste instructie is gemaakt, geretourneerd voor str1. Dus str en str1 verwijzen beide naar hetzelfde geheugen. Daarom wordt de printinstructie waar afgedrukt.

Java String intern() Methode Voorbeeld

Bestandsnaam: 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 }} 
Test het nu

Uitgang:

 false true 

Java String intern() Methode Voorbeeld 2

Laten we nog een voorbeeld bekijken om het string-intern-concept te begrijpen.

tekenreeks jsonobject

Bestandsnaam: InternVoorbeeld2.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 } } 
Test het nu

Uitgang:

 true false true false true false 

Punten om te onthouden

Hieronder volgen enkele belangrijke punten om te onthouden met betrekking tot de intern() methode:

website zoals coomeet

1) Een letterlijke tekenreeks roept altijd de methode intern() aan, ongeacht of men de methode intern() samen met de letterlijke tekenreeks vermeldt of niet. Bijvoorbeeld,

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

2) Telkens wanneer we een String-object maken met behulp van de nieuw trefwoord, er worden twee objecten gemaakt. Bijvoorbeeld,

 String str = new ('Hello World'); 

Hier wordt één object buiten het SCP in het heap-geheugen gemaakt vanwege het gebruik van het nieuwe trefwoord. Omdat we de string ook letterlijk hebben gekregen ('Hello World'); daarom wordt er één object aangemaakt binnen het SCP, op voorwaarde dat de letterlijke 'Hallo Wereld' al niet aanwezig is in het SCP.