Java Dizesi sınıfı Stajyer() yöntem interned dizeyi döndürür. Dizenin kanonik gösterimini döndürür.
Java geliştirilmiş döngü
Yeni bir anahtar kelime tarafından oluşturulmuşsa dizeyi bellekten döndürmek için kullanılabilir. Dize Sabit Havuzunda yığın dize nesnesinin tam bir kopyasını oluşturur.
İmza
intern() yönteminin imzası aşağıda verilmiştir:
public String intern()
İadeler
dahili dize
String.intern() Yönteminin ihtiyacı ve çalışması
Java'da bir dize oluşturulduğunda, yığındaki belleği kaplar. Ayrıca String sınıfının değişmez olduğunu biliyoruz. Bu nedenle, new anahtar sözcüğünü kullanarak bir dize oluşturduğumuzda, dizinin içeriğine bakılmaksızın, yığında karşılık gelen dize için yeni bellek ayrılır. Aşağıdaki kod parçacığını göz önünde bulundurun.
String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false
Println deyimi false değerini yazdırır çünkü her dize değişmezi için ayrı bellek ayrılmıştır. Böylece bellekte str ve str1 olmak üzere iki yeni dize nesnesi oluşturulur. farklı referanslara sahip.
lateks listesi
Java'da nesne oluşturmanın maliyetli bir işlem olduğunu biliyoruz. Bu nedenle, zamandan tasarruf etmek için Java geliştiricileri Dize Sabit Havuzu (SCP) kavramını ortaya attılar. SCP, yığın belleğinin içindeki bir alandır. Benzersiz dizeleri içerir. Dizeleri dize havuzuna koymak için, kişinin çağrılması gerekir. Stajyer() yöntem. Dize havuzunda bir nesne oluşturmadan önce JVM, dizenin havuzda zaten mevcut olup olmadığını kontrol eder. Dize mevcutsa referansı döndürülür.
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
Yukarıdaki kod parçacığında, Intern() yöntemi String nesnelerinde çağrılır. Bu nedenle bellek SCP'ye tahsis edilir. İkinci ifade için str ve str1'in içeriği aynı olduğundan yeni bir string nesnesi oluşturulmaz. Bu nedenle, ilk ifadede oluşturulan nesnenin referansı str1 için döndürülür. Böylece str ve str1'in her ikisi de aynı belleğe işaret eder. Bu nedenle, print ifadesi doğru olarak yazdırılır.
Java String intern() Yöntem Örneği
Dosya adı: StajyerÖrnek.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 }}Şimdi Test Edin
Çıktı:
linux nane tarçın vs mate
false true
Java String intern() Yöntemi Örnek 2
String intern kavramını anlamak için bir örnek daha görelim.
Dosya adı: StajyerÖrnek2.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 } }Şimdi Test Edin
Çıktı:
true false true false true false
Hatırlanacak noktalar
intern() yöntemiyle ilgili hatırlanması gereken bazı önemli noktalar şunlardır:
1) Bir dize değişmezi, dize değişmezi ile birlikte intern() yönteminden bahsedilsin veya belirtilmesin, her zaman intern() yöntemini çağırır. Örneğin,
String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true
2) Ne zaman bir String nesnesi yaratsak yeni anahtar kelimeyle iki nesne oluşturulur. Örneğin,
dize oluşturucu java
String str = new ('Hello World');
Burada new anahtar sözcüğünün kullanımı nedeniyle SCP dışındaki yığın belleğinde bir nesne oluşturulur. Elimizde string değişmezi de olduğu için ('Merhaba Dünya'); bu nedenle, 'Merhaba Dünya'nın SCP'de mevcut olmaması koşuluyla, SCP'nin içinde bir nesne oluşturulur.