Fw: [java-list] Problema de IF

2002-08-20 Thread Jorge Augusto Pizzato

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

2002-08-20 Thread Paulo Eduardo Azevedo Silveira

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

2002-08-20 Thread Rafael Steil


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

2002-08-20 Thread Luiz Fernando Bicalho

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

2002-08-20 Thread Roberto Figueiredo
  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

2002-08-20 Thread Paulo Eduardo Azevedo Silveira

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

2002-08-21 Thread Paulo Eduardo Azevedo Silveira

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

2002-08-21 Thread Daniel Destro
 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

2002-08-21 Thread Luiz Reginaldo



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

2002-08-22 Thread Rafael Steil


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

2002-08-22 Thread Luiz

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

2002-08-22 Thread Jorge Augusto Pizzato



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

2002-08-22 Thread Helder da Rocha

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] 
-