Det Java String klasse praktikant() metoden returnerer den interne streng. Det returnerer den kanoniske repræsentation af streng.
hvordan man laver om i photoshop
Den kan bruges til at returnere streng fra hukommelsen, hvis den er oprettet af et nyt nøgleord. Det opretter en nøjagtig kopi af heap-strengobjektet i String Constant Pool.
Underskrift
Signaturen for intern() metoden er angivet nedenfor:
public String intern()
Vender tilbage
interneret streng
String.intern()-metodens behov og virkemåde
Når en streng oprettes i Java, optager den hukommelse i heapen. Vi ved også, at String-klassen er uforanderlig. Derfor, når vi opretter en streng ved hjælp af det nye nøgleord, allokeres ny hukommelse i heapen for den tilsvarende streng, hvilket er uanset indholdet af arrayet. Overvej følgende kodestykke.
String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false
Println-sætningen udskrives falsk, fordi der er allokeret separat hukommelse for hver streng-literal. Således oprettes to nye strengobjekter i hukommelsen, dvs. str og str1. der har forskellige referencer.
mysql venstre join
Vi ved, at oprettelse af et objekt er en dyr operation i Java. Derfor, for at spare tid, kom Java-udviklere med konceptet String Constant Pool (SCP). SCP er et område inde i heap-hukommelsen. Den indeholder de unikke strenge. For at sætte strengene i strengpuljen skal man kalde praktikant() metode. Før du opretter et objekt i strengpuljen, kontrollerer JVM, om strengen allerede er til stede i poolen eller ej. Hvis strengen er til stede, returneres dens reference.
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 ovenstående kodestykke kaldes intern() metoden på String-objekterne. Derfor er hukommelsen allokeret i SCP'en. For den anden sætning oprettes der ikke noget nyt strengobjekt, da indholdet af str og str1 er det samme. Derfor returneres referencen for objektet, der blev oprettet i den første sætning, for str1. Str og str1 peger altså begge på den samme hukommelse. Derfor udskrives udskriften sand.
Java String intern() Metodeeksempel
Filnavn: 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 det nu
Produktion:
false true
Java String intern() Metode eksempel 2
Lad os se endnu et eksempel for at forstå string praktikant-konceptet.
verilog altid
Filnavn: 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 } }Test det nu
Produktion:
true false true false true false
Punkter at huske
Følgende er nogle vigtige punkter at huske angående intern() metoden:
hvor mange mission umulig-film er der
1) En strengliteral påberåber sig altid intern() metoden, uanset om man nævner intern() metoden sammen med strengen literal eller ej. For eksempel,
String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true
2) Hver gang vi opretter et String-objekt ved hjælp af ny nøgleord, oprettes to objekter. For eksempel,
String str = new ('Hello World');
Her oprettes et objekt i heap-hukommelsen uden for SCP på grund af brugen af det nye nøgleord. Som vi også har fået strengen bogstavelig ('Hello World'); derfor oprettes ét objekt inde i SCP'et, forudsat at det bogstavelige 'Hello World' ikke allerede er til stede i SCP'et.