A Classe String 
===============

Fonte: http://www.mycgiserver.com/servlet/delacerda.CertificacaoTopicoNove

--------------------------------------------------------------------------------

Em Java você tem duas classes para encapsular string de characters chamadas String e 
StringBuffer. 

Se você cria uma instância de classe String , não existe maneira de mudar o valor 
encapsulado 
i.e. chamado imutabilidade, então strings são imutáveis. 

Construindo Strings: 

String s = "Testing String"; 
String s1 = new String("Testing String"); 

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

String s = "Testing String"; 

Qaundo 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 s1 = new String("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() . 

Testando String Equality 

Exemplo: 

String s = "Testing String"; 
String s1 = new String("Testing String"); 

Para testar s e s1 use o método equals() 
s.equals(s1); 

Se você não conhece quando os dois tipos referenciados pertencem ao mesmo objeto ou 
objetos diferentes e você realmente não quer saber , então utilize o método 
equals() .  

Exemplo: 

String s = "Testing String "; 
String s1 = "Testing String"; 

Se duas referencias referem para o mesmo objeto então use == . 

Para testar s e s1 use ==  
s = s1; 

Existem alguns métodos da classe String que podem ser interessantes. 

Métodos da Classe String:
concat()
equals()
equalsIgnoreCase()
length()
substring()
toLowerCase()
toUpperCase()
trim()
 

Exemplo: 

public class TestString { 

       public static void main(String args[]) {  
             String s = "Hello"; 
             String s1 = " how"; 
             s1.append("is going"); 
             String s2 = s.concat(s1.concat(" are you"));  
             String s3 = "hello"; 
             if (s3.equalsIgnoreCase(s)) 
                   System.out.println(s2); 
       } 

} 

Saída: 
Hello how are you 

Aqui o método append() não é um métod da classe String mas mesmo assim ele compila 
e dá a você a saída abaixo. 

Cuidado sobre este tipo de exemplos , você pode ter questões como estas no seu exame 
real. 


--------------------------------------------------------------------------------

Algumas vezes no exame real você pode esperar questões comparando dois construtores 
de strings com classes String e StringBuffer . 

StringBuffer Class: 

Os construtores de strings com esta classe podem ser modificados. 

Exemplo: 

public class TestBString { 

       public static void main(String args[]) {  
             StringBuffer s = new StringBuffer("Hello"); 
             String s1 = "Hello"; 
             if (s1.equals(s)) 
                   System.out.println(s);  
       } 

} 

O exemplo acima escreve nada na saída do console. 

Alguns métodos da classe StringBuffer: 

Métodos StringBuffer : 
append()
insert()
reverse()
setCharAt()
setLength()
  
--------------------------------------------------------------------------------------------------------------------------------
  

Fonte: http://www.mycgiserver.com/servlet/delacerda.CertificacaoTopicoNove

Eliseu Pfaffenseller
Analista de Sistemas Senior

--------------------------------------------------------------------------------------------------------------------------------
    

-----Original Message-----
From: Alexandro Strack [mailto:[EMAIL PROTECTED]
Sent: 02 June, 2003 16:06
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Dúvida cruel


Caro Rodrigo,

    Se você já sabe da imutabilidade das Strings então só lhe falta o fato
da passagem de parâmetros der por valor e não por referência. Ah, só mais um
detalhe, a variável y não está vazia mais sim com o conteúdo "teste- ".

Um abraço,

Alexandro Strack
----- Original Message -----
From: "Rodrigo Alvares de Souza" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, May 30, 2003 10:31 AM
Subject: [java-list] Dúvida cruel


Alguem saberia me dizer pq qdo eu imprimo a variavel y, ela está vazia ? Eu
sei que tem a ver com a imutabilidade das Strings, mas queria uma resposta
que me convencesse.... :-)

public class teste1 {

    public teste1() {    }

    public static void main(String[] args) {
        teste1 t = new teste1();
        String y = new String("teste - ");
        int z = 10;
        System.out.println(t.x(y,z));
        System.out.println(y);
    }

    private String x (String str1,int z)
    {
       str1 = str1.concat(" ok xxxxxxxxxxxx")   ;
       z = 2003;
       return str1;
    }

}

Obrigado.
Atenciosamente,

Paulo Henrique C. Zanchettin
Scopus Tecnologia S/A
( 55-11-3909-3561
* [EMAIL PROTECTED]

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usurios 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 Usurios Java da Sucesu-SP 
dvidas 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] 
-------------------------------------------------------------------------

Responder a