Alguém sabe o que o código abaixo imprime ?
public class Teste {
public static void main(String args[]) {
String s1 = “aaa”;
s1.concat(“bbb”);
System.out.println(s1);
}
}
Cuidado ao bater o olho e ir respondendo, vc pode errar 
Alguém sabe o que o código abaixo imprime ?
public class Teste {
public static void main(String args[]) {
String s1 = “aaa”;
s1.concat(“bbb”);
System.out.println(s1);
}
}
Cuidado ao bater o olho e ir respondendo, vc pode errar 
Deve imprimir “aaa” pq as Strings são imutáveis.
o que o código abaixo imprime?
public class TString1 {
public static void main (String [] args) {
String s = new String("teste");
String x = s.toString();
System.out.println("reference equality: " + (s==x));
System.out.println("object equality: " + (s.equals(x)));
}
}
Oi galera,
A resposta é true e true. Embora a String seja imutável, e x seja uma nova instancia (diferente de s).
O java para otimizar cria um pool de string e quando vc faz a referencia de x = s.toString() ou até se alterasse seu codigo para:
String s = "teste";
String x = "teste";
System.out.println("reference equality: " + (s==x));
System.out.println("object equality: " + (s.equals(x)));
Ele usa o pool e a resposta seria true e true.
Se vc não quer utilizar o pool vc pode trocar o codigo para:
String s = "teste";
String x = new String("teste");
System.out.println("reference equality: " + (s==x));
System.out.println("object equality: " + (s.equals(x)));
Assim a resposta seria false e true.
Abrços
O que acontece no meu código de exemplo, para explicar melhor é o seguinte:
O método concat() retorna uma nova String. Portanto o s1 não muda nunca, continua sendo “aaa”.
Se colocássemos na linha o seguinte:
String s2 = s1.concat(“bbb”);
System.out.println(s2);
aí imprimia “aaabbb”, pois s2 recebe o novo objeto String retornado da chamada ao método concat()
Agora no código do Márcio, imprime true e true 
false
por que o = é resolvido antes do equals 
pessoal, qual a diferença entre eu declarar dentro de um metodo, o seguinte:
‘public void main(String[] args)’ e ‘public void main(String args[])’ ?
Tirando a visual/estetica, nao ha diferenca alguma.
Rafael
me explica um negócio, qual a diferença de:
String x = s.toString();
para:
String x = s;
Por acaso no primeiro eu estou igualando o conteúdo da String e no segundo a referência?
Valew.
no exemplo que eu postei o método toString() não deveria retornar um novo objeto String?