Fw: [java-list] Problema de IF
Esqueci de colocar o motivo do teste feito: Segundo o "famoso livro verde" pag. 447 objetos string são imutáveis e seu conteúdo de caracteres não pode ser modificado depois de criado. Talvez em versões anteriores do SDK, mas na versão 1.4.0 o conteúdo pode ser alterado cfe. teste feito. Existe a possibilidade então de que você esteja utilizando uma versão do SDK que não permita que um objeto string seja alterado (no seu caso quando ls_vet_login[1] = rs.getString("tp_pessoa"); atribui "A" a string não pode mais ser alterada para "Aluno"). Se for este o caso, tente utilizar StringBuffer no lugar de string ou baixe uma nova versão do SDK. Se não for este o caso e o DB está retornando o valor correto, não sei. -Mensagem Original- De: "Jorge Augusto Pizzato" <[EMAIL PROTECTED]> Para: <[EMAIL PROTECTED]> Enviada em: Segunda-feira, 19 de Agosto de 2002 11:53 Assunto: Re: [java-list] Problema de IF Verifique se o rs está retornando com getString o valor apropriado. A lógica está correta, tanto é que testei para ver. ls_vet_login[1] = rs.getString("tp_pessoa");está colocando "A" no array ? public class lixo { /** Creates a new instance of lixo */ public lixo() { String a = "A"; String[] b = new String[2]; b[0] = "C"; b[1] = "A"; System.out.println(a + " " + b[0] + " " + b[1]); a = "BA"; b[0] = "DC"; if (b[1] == "A") b[1] = "Aluno"; System.out.println(a + " " + b[0] + " " + b[1]); } -Mensagem Original- De: "Ronaldo Negreiros L. Filho" <[EMAIL PROTECTED]> Para: <[EMAIL PROTECTED]> Enviada em: Quinta-feira, 15 de Agosto de 2002 15:22 Assunto: [java-list] Problema de IF Pessoal, Alguem poderia me ajudar com o código abaixo??.. pq o array ls_vet_login[1] não recebe a string "Aluno". if(rs != null) { if(rs.next()) { ls_vet_login[0] = rs.getString("ds_nome"); ls_vet_login[1] = rs.getString("tp_pessoa"); principal.printlog("Vou chamar o if=A"); if (ls_vet_login[1] =="A") { principal.printlog("Aluno"); ls_vet_login[1]="Aluno"; } } } Por favor me ajudem... []´s Ronaldo -- 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] - --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.381 / Virus Database: 214 - Release Date: 02/08/02 -- 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] -
Re: Fw: [java-list] Problema de IF
On Tue, 20 Aug 2002 08:09:51 -0300, "Jorge Augusto Pizzato" <[EMAIL PROTECTED]> escreveu : > Esqueci de colocar o motivo do teste feito: > Segundo o "famoso livro verde" pag. 447 objetos string são imutáveis e seu > conteúdo de caracteres não pode ser modificado depois de criado. > Talvez em versões anteriores do SDK, mas na versão 1.4.0 o conteúdo pode ser > alterado cfe. teste feito. 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[]; que eh onde ele guarda o valor da String, e os UNICOS lugares em que isto eh alterado, sao os construtores. Strings NAO podem ser alteradas, se nao o pool que o java faz delas iria ser a maior confusao! --- Paulo Eduardo Azevedo Silveira http://www.paulo.com.br ICQ 5142673 -- 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] -
Re: Fw: [java-list] Problema de IF
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] -
RE: Fw: [java-list] Problema de IF
na verdade voce nao mudou o valor da string, e sim criou uma nova string com o valor novo -Original Message- From: Rafael Steil [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 20, 2002 12:35 To: [EMAIL PROTECTED] Subject: Re: Fw: [java-list] Problema de IF 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 Usuarios Java da Sucesu-SP dzvidas 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] -
Re: Fw: [java-list] Problema de IF
Pense em duas coisas distintas: Objeto e Referência em Memótia. O objeto String s1 faz referência em memória de um objeto com o conteúdo "Minha String". Quando você executa a linha s1 = "Alterei o valor", você só mudou a referência em memória do objeto para um objeto com o conteúdo "Alterei o valor". O sinônimo da linha s1 = "Alterei o valor" é s1 = new java.lang.String("Alterei o valor"); Isto é s1 está referenciando a um novo objeto com o conteúdo "Alterei o valor". Será que agora fica mais claro? -Mensagem Original- De: Rafael Steil Enviado: terça-feira, 20 de agosto de 2002 15:45 Para: [EMAIL PROTECTED] Assunto: Re: Fw: [java-list] Problema de IF Bom, eu concordo que a documentacao diz isso, e ja fiz testes onde realmentenao consegui alterar o valor de uma String. Mas entao porque o codigopublic 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 foimodificado. 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 Usuarios Java da Sucesu-SP dzvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] -Aproveite melhor a Web. Faça o download GRÁTIS do MSN Explorer : http://explorer.msn.com.br/intl.asp#po
Re: Fw: [java-list] Problema de IF
Voce ainda nao entendeu a diferenca entra um OBJETO e uma REFERENCIA Esse caso que voce mostrou, voce mudou a REFERENCIA s1 para apontar para outra String. Faca este teste: public class StringTest { public static void main(String args[]) { String s1 = "Minha String"; System.out.println("s1: "+ s1); s1.toUpperCase(); System.out.println("s1 alerada: "+ s1); } } Viu que engracado? NAO ficou upper case, pq o metodo toUpperCase() devolve uma String em upper case, ela nao faz isso sobre o proprio valor. --- Paulo Eduardo Azevedo Silveira http://www.paulo.com.br ICQ 5142673 -- 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] -
Re: Fw: [java-list] Problema de IF
ATENçÂO PESSOAL! On Tue, 20 Aug 2002 15:54:34 -0300, "Roberto Figueiredo" <[EMAIL PROTECTED]> escreveu : > > O sinônimo da linha > s1 = "Alterei o valor" > é > s1 = new java.lang.String("Alterei o valor"); NÃO é verdade! Considere: s1 = "teste"; s2 = "teste"; if (s1 == s2) { Sytem.out.println("ISSO APARECE") } s1 = new String("teste"); s2 = new String("teste"); if (s1 == s2) { Sytem.out.println("ISSO NAO APARECE") } sei que eh um detalhe do detalhe, mas soh estou mostrando o que realmente acontece > > > Será que agora fica mais claro? > > > -Mensagem Original----- > De: Rafael Steil > Enviado: terça-feira, 20 de agosto de 2002 15:45 > Para: [EMAIL PROTECTED] > Assunto: Re: Fw: [java-list] Problema de IF > > > 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 Usuarios Java da Sucesu-SP > dzvidas 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] > -Aproveite >melhor a Web. Faça o download GRÁTIS do MSN Explorer : http://explorer.msn.com.br/intl.asp#po > > --- Paulo Eduardo Azevedo Silveira http://www.paulo.com.br ICQ 5142673 -- 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] -
Re: Fw: [java-list] Problema de IF
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 realmentenao consegui alterar o valor de uma String. Mas entao porque o codigopublic 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 foimodificado. 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.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara 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.
Re: Fw: [java-list] Problema de IF
Opa! Roberto, s1 não é um objeto, e sim uma variável que referencia um objeto em memória. Abraços, Luiz Reginaldo - Original Message - From: Roberto Figueiredo To: [EMAIL PROTECTED] Sent: Tuesday, August 20, 2002 3:54 PM Subject: Re: Fw: [java-list] Problema de IF Pense em duas coisas distintas: Objeto e Referência em Memótia. O objeto String s1 faz referência em memória de um objeto com o conteúdo "Minha String". Quando você executa a linha s1 = "Alterei o valor", você só mudou a referência em memória do objeto para um objeto com o conteúdo "Alterei o valor". O sinônimo da linha s1 = "Alterei o valor" é s1 = new java.lang.String("Alterei o valor"); Isto é s1 está referenciando a um novo objeto com o conteúdo "Alterei o valor". Será que agora fica mais claro? -Mensagem Original- De: Rafael Steil Enviado: terça-feira, 20 de agosto de 2002 15:45 Para: [EMAIL PROTECTED] Assunto: Re: Fw: [java-list] Problema de IF Bom, eu concordo que a documentacao diz isso, e ja fiz testes onde realmentenao consegui alterar o valor de uma String. Mas entao porque o codigopublic 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 foimodificado. 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 Usuarios Java da Sucesu-SP dzvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] - Aproveite melhor a Web. Faça o download GRÁTIS do MSN Explorer : http://explorer.msn.com.br/intl.asp#po
Re: Fw: [java-list] Problema de IF
Ok, mas neste caso que voce apresentou sao situacoes diferentes, nao?!. No primeiro exemplo as referencias apontam para apenas um objeto na memoria, porem quando voce faz a chamada a new String("teste") para as variaveis voce esta na verdade alterando ( recriando, ou algo assim ) os objetos, ou seja, agora sao objetos distintos na memoria.. eh isso? Rafael steil On Tue, 20 Aug 2002 18:23:21 "Paulo Eduardo Azevedo Silveira" <[EMAIL PROTECTED]> wrote: > ATENçÂO PESSOAL! > > NÃO é verdade! > > Considere: > > s1 = "teste"; > s2 = "teste"; > > if (s1 == s2) { > Sytem.out.println("ISSO APARECE") > } > > s1 = new String("teste"); > s2 = new String("teste"); > > if (s1 == s2) { > Sytem.out.println("ISSO NAO APARECE") > } > > sei que eh um detalhe do detalhe, mas soh estou mostrando o que realmente acontece -- 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] -
Re: Fw: [java-list] Problema de IF
mas nesse caso é diferente, por que como o compilador java é decente, e a String É IMUTAVEL, entao ele pode associas o s1 e o s2 ao mesmo objeto String e quando você da o new, o compilador é obrigado a utilizar outro objeto. - Original Message - From: "Paulo Eduardo Azevedo Silveira" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>; "Roberto Figueiredo" <[EMAIL PROTECTED]> Sent: Tuesday, August 20, 2002 6:23 PM Subject: Re: Fw: [java-list] Problema de IF > ATENçÂO PESSOAL! > > On Tue, 20 Aug 2002 15:54:34 -0300, "Roberto Figueiredo" <[EMAIL PROTECTED]> escreveu : > > > > > O sinônimo da linha > > s1 = "Alterei o valor" > > é > > s1 = new java.lang.String("Alterei o valor"); > > NÃO é verdade! > > Considere: > > s1 = "teste"; > s2 = "teste"; > > if (s1 == s2) { > Sytem.out.println("ISSO APARECE") > } > > s1 = new String("teste"); > s2 = new String("teste"); > > if (s1 == s2) { > Sytem.out.println("ISSO NAO APARECE") > } > > sei que eh um detalhe do detalhe, mas soh estou mostrando o que realmente acontece > > > > > > > Será que agora fica mais claro? > > > > > > -Mensagem Original- > > De: Rafael Steil > > Enviado: terça-feira, 20 de agosto de 2002 15:45 > > Para: [EMAIL PROTECTED] > > Assunto: Re: Fw: [java-list] Problema de IF > > > > > > 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 Usuarios Java da Sucesu-SP > > dzvidas 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] > > -A proveite melhor a Web. Faça o download GRÁTIS do > MSN Explorer : http://explorer.msn.com.br/intl.asp#po > > > > > > --- > Paulo Eduardo Azevedo Silveira > http://www.paulo.com.br ICQ > 5142673 > > > -- 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] -
Fw: Fw: [java-list] Problema de IF
Eu fiz isto utilizando a classe lixo de teste que está anexa no e-mail. public class lixo { /** Creates a new instance of lixo */ public lixo() { String a = "A"; String[] b = new String[2]; b[0] = "C"; b[1] = "A"; System.out.println(a + " " + b[0] + " " + b[1]); a = "BA"; b[0] = "DC"; if (b[1] == "A") b[1] = "Aluno"; System.out.println(a + " " + b[0] + " " + b[1]); } public void main etc. } A segunda saída alterar o valor de a de "A" para "BA", o valor de b[0] de "C" para "DC" e de b[1] de "A" para "Aluno". Isto para mim é alterar o conteúdo de strings. O meu computador ao menos faz isto, e ele não tem nada de especial, aliás é bem antigo e lento o coitado. -Mensagem Original- De: "Paulo Eduardo Azevedo Silveira" <[EMAIL PROTECTED]> Para: <[EMAIL PROTECTED]>; "Jorge Augusto Pizzato" <[EMAIL PROTECTED]> Enviada em: Terça-feira, 20 de Agosto de 2002 11:09 Assunto: Re: Fw: [java-list] Problema de IF On Tue, 20 Aug 2002 08:09:51 -0300, "Jorge Augusto Pizzato" <[EMAIL PROTECTED]> escreveu : > Esqueci de colocar o motivo do teste feito: > Segundo o "famoso livro verde" pag. 447 objetos string são imutáveis e seu > conteúdo de caracteres não pode ser modificado depois de criado. > Talvez em versões anteriores do SDK, mas na versão 1.4.0 o conteúdo pode ser > alterado cfe. teste feito. 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[]; que eh onde ele guarda o valor da String, e os UNICOS lugares em que isto eh alterado, sao os construtores. Strings NAO podem ser alteradas, se nao o pool que o java faz delas iria ser a maior confusao! --- Paulo Eduardo Azevedo Silveira http://www.paulo.com.br ICQ 5142673 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.381 / Virus Database: 214 - Release Date: 02/08/02 -- 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] -
Re: Fw: [java-list] Problema de IF
O valor da String não foi alterado. O da referência s1 sim. Veja o que acontece: > String s1 = "Minha String"; ref. end. heap --- s1 = 0x99AB -> 0x99AB "Minha String" --- > s1 = "Alterei o valor"; ref. end. heap --- s1 = 0x9A03 0x99AB "Minha String" | --- +-> 0x9A03 "Alterei o valor" Os endereços acima são hipotéticos. Você não tem acesso a eles. Veja que a constante "Minha String" não foi alterada. Quando você faz s1 = "Alterei o valor" na verdade você está copiando o ponteiro (ou referência) que contém o endereço onde está localizada a outra constante "Alterei o valor". Como não há mais referências apontando para "Minha String", o garbage collector irá recolher o objeto tão logo seja possível. O string é imutável porque não há métodos para modificá-lo. Veja que os métodos replace(), append(), etc. de String sempre retornam um novo String. O String original não é alterado. Como strings são imutáveis e constantes, eles são mantidos em um pool e as constantes são reutilizadas, por isto se você faz: String s1 = "A"; String s2 = "B"; s1 e s2 contém referências idênticas e consequentemente apontam para o mesmo objeto.Mas você não deve usar "==" para comparar strings pois geralmente, quando você precisa compará-los, o string que você recebe foi criado em outro lugar e realmente é outro objeto. Considere o seguinte: String s1 = "A"; String s2= new String("A"); Agora temos dois objetos distintos. Uma comparação com "==" não funciona. Helder. -- Helder da Rocha ([EMAIL PROTECTED]) Web Consultant www.argonavis.com.br São Paulo, Brazil +55 (11) 3044 4398 +55 (11) 9291 0567 - Original Message - From: "Rafael Steil" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, August 20, 2002 12:34 PM Subject: Re: Fw: [java-list] Problema de IF > > 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] > - > > -- 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] -