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.