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