Olá pessoal,
Estou em dúvida em porquê, quando uma comparação com String com == é verdadeira ou falsa.
Exemplo:
public class Teste{
public static void main(String[] args){
String x = "Portal Java";
System.out.println(InnerTeste.x1 == x);
}
}
class InnerTeste{
static String x1 = "Portal Java";
}
Porque a resposta é true.
sundaPJ
#2
porque voce esta retornando um resultado de comparação entre as variáveis, e nao atualizando uma variavel. por exemplo:
x = 1
z = {x = 1} && Leia assim, ignore a sintaxe.
é diferente de z = {x + 1}
o tipo de variavel que e o z vai mudar de acordo com a sintaxe escolhida.
em clipper ficaria assim:
? 1 = 1
.T.
ou ? 1 + 2
3
Retorna true porque você está verificando duas Strings no pool, ou seja, irá ser verificado se as duas são iguais.
Mas se você fizer assim:
String a = new String("a");
String b = new String("a");
if (a == b) {
System.out.println("Sim");
} else {
System.out.println("Não");
}
A resposta é Não, porque eu criei dois objetos Strings e nesse momento não estão apontando para a mesma referência na memória.
Porém se eu fizer assim:
String a = new String("a");
String b = a;
if (a == b) {
System.out.println("Sim");
} else {
System.out.println("Não");
}
A resposta é Sim porque as duas variáveis de referência (a e b) estão apontando para o mesmo valor na memória.