logo

Java String praktikant()

De Java String klass internera() metod returnerar den internerade strängen. Den returnerar den kanoniska representationen av sträng.

sortera en array i java

Den kan användas för att returnera sträng från minnet om den skapas av ett nytt nyckelord. Den skapar en exakt kopia av heap-strängobjektet i String Constant Pool.

Signatur

Signaturen för intern()-metoden ges nedan:

 public String intern() 

Returnerar

internt snöre

String.intern()-metodens behov och funktion

När en sträng skapas i Java upptar den minne i högen. Vi vet också att klassen String är oföränderlig. Därför, när vi skapar en sträng med det nya nyckelordet, allokeras nytt minne i högen för motsvarande sträng, vilket är oberoende av innehållet i arrayen. Tänk på följande kodavsnitt.

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

Uttrycket println skrivs ut falskt eftersom separat minne tilldelas för varje strängliteral. Således skapas två nya strängobjekt i minnet, dvs str och str1. som har olika referenser.

rekursion java

Vi vet att att skapa ett objekt är en kostsam operation i Java. Därför, för att spara tid, kom Java-utvecklare på konceptet String Constant Pool (SCP). SCP är ett område inuti heapminnet. Den innehåller de unika strängarna. För att lägga strängarna i strängpoolen måste man ringa till internera() metod. Innan ett objekt skapas i strängpoolen kontrollerar JVM om strängen redan finns i poolen eller inte. Om strängen finns, returneras dess referens.

 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 

I ovanstående kodavsnitt anropas intern()-metoden på String-objekten. Därför allokeras minnet i SCP:n. För den andra satsen skapas inget nytt strängobjekt eftersom innehållet i str och str1 är detsamma. Därför returneras referensen för objektet som skapades i den första satsen för str1. Str och str1 pekar alltså båda på samma minne. Därför skrivs det tryckta uttalandet ut sant.

Java String intern() Metodexempel

Filnamn: 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 }} 
Testa det nu

Produktion:

 false true 

Java String intern() Metodexempel 2

Låt oss se ytterligare ett exempel för att förstå strängpraktikkonceptet.

fördelningsrätt boolesk algebra

Filnamn: 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 } } 
Testa det nu

Produktion:

 true false true false true false 

Punkter att komma ihåg

Följande är några viktiga punkter att komma ihåg angående intern()-metoden:

java-ingång

1) En strängliteral anropar alltid intern()-metoden, oavsett om man nämner intern()-metoden tillsammans med strängen literal eller inte. Till exempel,

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

2) När vi skapar ett String-objekt med hjälp av ny nyckelord skapas två objekt. Till exempel,

 String str = new ('Hello World'); 

Här skapas ett objekt i högminnet utanför SCP på grund av användningen av det nya nyckelordet. Som vi har fått strängen bokstavlig också ('Hello World'); därför skapas ett objekt inuti SCP:n, förutsatt att det bokstavliga 'Hello World' inte redan finns i SCP:n.