logo

Estagiário de Java String()

O Classe String Java estagiário() método retorna a string internada. Ele retorna a representação canônica da string.

Pode ser usado para retornar uma string da memória se for criada por uma nova palavra-chave. Ele cria uma cópia exata do objeto heap string no String Constant Pool.

Assinatura

A assinatura do método intern() é fornecida abaixo:

 public String intern() 

Devoluções

corda internada

A necessidade e funcionamento do método String.intern()

Quando uma string é criada em Java, ela ocupa memória no heap. Além disso, sabemos que a classe String é imutável. Portanto, sempre que criamos uma string usando a palavra-chave new, uma nova memória é alocada no heap para a string correspondente, o que independe do conteúdo do array. Considere o seguinte trecho de código.

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

A instrução println imprime falso porque uma memória separada é alocada para cada string literal. Assim, dois novos objetos string são criados na memória, ou seja, str e str1. que contém referências diferentes.

Sabemos que criar um objeto é uma operação cara em Java. Portanto, para economizar tempo, os desenvolvedores Java criaram o conceito de String Constant Pool (SCP). O SCP é uma área dentro da memória heap. Ele contém as strings exclusivas. Para colocar as strings no pool de strings, é necessário chamar o método estagiário() método. Antes de criar um objeto no pool de strings, a JVM verifica se a string já está presente no pool ou não. Se a string estiver presente, sua referência será retornada.

 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 

No trecho de código acima, o método intern() é invocado nos objetos String. Portanto, a memória é alocada no SCP. Para a segunda instrução, nenhum novo objeto string é criado, pois o conteúdo de str e str1 é o mesmo. Portanto, a referência do objeto criado na primeira instrução é retornada para str1. Assim, str e str1 apontam para a mesma memória. Portanto, a instrução print é verdadeira.

Exemplo de método Java String intern()

Nome do arquivo: 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 }} 
Teste agora

Saída:

 false true 

Java String intern() Método Exemplo 2

Vejamos mais um exemplo para entender o conceito de estagiário de string.

Nome do arquivo: 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 } } 
Teste agora

Saída:

 true false true false true false 

Pontos para lembrar

A seguir estão alguns pontos importantes a serem lembrados em relação ao método intern():

1) Uma string literal sempre invoca o método intern(), quer se mencione o método intern() junto com a string literal ou não. Por exemplo,

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

2) Sempre que criamos um objeto String usando o novo palavra-chave, dois objetos são criados. Por exemplo,

int para string java
 String str = new ('Hello World'); 

Aqui, um objeto é criado na memória heap fora do SCP devido ao uso da palavra-chave new. Como também obtivemos a string literal ('Hello World'); portanto, um objeto é criado dentro do SCP, desde que o literal 'Hello World' já não esteja presente no SCP.