Na verdade o que ocorre ai � o seguinte, vc n�o alterou o valor da sua String e sim a refer�ncia para ela.
Em java existe uma coisa chamada pool de string, que em tempo de compila��o ele transforma em Objetos String todas as Literais String, ou seja, se vc fizer:
String abc = "abc";
String def = "abc";
// if( abc == def ) true
// if( abc == "abc" ) true
eles conter�o a refer�ncia para o mesmo objeto, por�m qndo vc faz:
def = "def";
vc nao trocou o valor do objeto e sim a referencia dele, que estar� apontando para um outro objeto.
Ou seja, todos os Wrapper do java s�o imutaveis no seu valor (Integer, Char, Double, Float, Long, String)...
porem pode-se mudar a referencia para outro objeto.. isso eh um pouco logico, pois se mudasse o valor, poderia afetar outras referencias do programa...
Rafael Steil <[EMAIL PROTECTED]> escreveu:
Bom, eu concordo que a documentacao diz isso, e ja fiz testes onde realmente
nao consegui alterar o valor de uma String. Mas entao porque o codigo
public class StringTest
{
public static void main(String args[])
{
String s1 = "Minha String";
System.out.println("s1: "+ s1);
s1 = "Alterei o valor";
System.out.println("s1 alerada: "+ s1);
}
}
mostra os valores "Minha String" "Alterei o valor" ? ou seja, o valor da String foi
modificado. Isso me deixa um pouco confuso tmb..
Rafael Steil
> Ola...
> Como voce fez isso? Acho que nao pode mudar o valor de uma String de jeito nenhum
> Se voce olhar o codigo fonte da classe java.lang.String, vai ver:
>
> private char value[];
>
------------------------------ 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]
-------------------------------------------------------------------------
Yahoo! PageBuilder - O super editor para cria��o de sites: � gr�tis, f�cil e r�pido.
