String

Olhem essas comparações:

public class A
{
	public static void main(String [] args)
	{
		 String S1 = "A";
		 String S2 = new String("A");
		       
		 System.out.println( S1.intern() == S2 );
		 System.out.println( S2.intern() == S2 );
		 System.out.println( S2.intern() == S1 );
	 }
}

O que faz esse método intern() ?
O que é realmente comparado ?

Dá uma olhadinha aqui:

http://www.guj.com.br/java.tutorial.artigo.103.1.guj

Não sei se vai te ajudar, eu passei só o olho no conteúdo.

Até.

nao tenho ideia doq faz o Intern…

na documentação http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html
diz [quote]Returns a canonical representation for the string object.[/quote]

de qqer jeito… não se compara Strings com ==

deve usar o metodo .equals

s1.equals(s2)

Isso é questão de certificação, por isso quero entender seu funcionamento.

intern(): retorna uma referência para um objeto String correspondente armazenado no “pool”;

http://www.guj.com.br/java.tutorial.artigo.103.1.guj

Jovem, acho que entendi…veja:

A diferença entre as duas formas de construção string é que , o lugar onde estas
strings são disponíveis.


/*
Quando você cria o objeto String no formato abaixo então o objeto String está 
disponível dentro do pool de string literals. Se a mesma string já existe no pool de 
strings então a antiga string vai ser substituida pela nova.
*/
String s = "Testing String"; 

/*
Quando você constroi a String chamando a palavra chave new então o objeto String vai 
ser criado em tempo de execução e não vai existir no pool de strings. Para colocar 
esta string encapsulada dentro do pool chame o método intern()
*/
String s1 = new String("Testing String"); 

veja:http://www.mail-archive.com/java-list@soujava.org.br/msg36608.html