Caros membros da lista,
Essa quest�o j� foi discutida h� um tempo atr�s, voltou novamente agora,
e ainda gera discuss�es. Postei uma mensagem h� poucos dias, explicando a
diferen�a entre "literais String" e "objetos String". Talvez tenha ficado
meio confuso o texto, mais a� vai novamente. A diferen�a est� apenas na
forma de declara��o e inicializa��o das vari�veis String. Ao contr�rio do
que ocorre com qualquer outra classe, na classe String existem 2 formas de
declara��o de vari�veis. A primeira � a forma normal, com a clara indica��o
de aloca��o de novo espa�o de mem�ria atrav�s do operador new:
String str = new String("texto");
E a outra forma de declara��o de String, por meio do uso de literais. Um
literal � a parte � direita da declara��o abaixo. Observem que n�o h� uso do
operador new:
String str = "texto";
Essa �ltima forma de declara��o de objetos � uma exce��o � regra da
declara��o e inicializa��o de objetos em Java: n�o � criado um novo objeto,
e sim reaproveitado um novo espa�o, caso haja um espa�o de mem�ria ocupado
por uma String de mesmo conte�do. Portanto, SEMPRE a compara��o abaixo vai
ser TRUE:
String str1 = "teste";
String str2 = "teste";
System.out.println(" str1 == str2 = "+(str1==str2));
Isso S� vale para String's. Tudo isso aqui est� muito bem documentado,
faz parte da especifica��o de JAVA, e pra quem quiser comprovar, � s� dar
uma lida no "The Java Language Specification", do James Gosling (et al.)
Est� dispon�vel on-line. O endere�o:
http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html
Boa leitura!!!
Rosfran Lins Borges
Analista de Sistemas - NSV
[EMAIL PROTECTED]
F�ton� Inform�tica e Servi�os
Fone: (61) 3031 5060 R.: 5037
-----Mensagem original-----
De: Mauro [mailto:martini@;floripa.com.br]
Enviada em: quarta-feira, 16 de outubro de 2002 12:29
Para: [EMAIL PROTECTED]
Assunto: Re: Re: [java-list] Inst�ncias
Nada disso. Como as coisas s�o Objetos o == compara
se � o MESMO OBJETO, ou seja, se duas vari�veis fazem
refer�ncia pra MESMA INST�NCIA do objeto.
Pode ter v�rios objetos iguais, ou seja, com a mesma
forma e conte�do que n�o s�o o mesmo objeto. Pra isso
tem os m�todos equals(), contentEquals(), compare().
Achar que dois objetos da mesma classe e com o mesmo
conte�do devem ser == � o mesmo que dizer que jap�nes
� tudo igual :-).
Como a classe String � imut�vel, n�o pode ser alterada,
o compilador otimiza o uso da mem�ria usando o mesmo
objeto pras duas strings com mesmo conte�do. Mas n�o
conte com isto em todas as vers�es e implementa��es.
Pode considerar que no exemplo o x s� � igual ao y
por coincid�ncia.
Michel writes:
> Caro Luiz Barbosa, estou utilizando apenas para
> exemplificar, se, antes da compara��o, voce mandar
> escrever na tela os valores de x e de y, ser�o ambos
> de "100", mas o 1� ele considera iguais, o 2� n�o.
> J� que possuem valores iguais, n�o acha que ambos
> deveria retornar o mesmo valor na compara��o (x == y)???
---
Mauro Ramos Martini
[EMAIL PROTECTED]
counter.li.org#225287
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------