Eu não entendi quando devo usar == ou quando devo usar equals()?
Equals ou ==?
16 Respostas
tá falando sério? com mais de 100 mensagens, várias no java avançado…
bom
façaa
String a = “Brasil”;
String b = “Brasil”;
depois faça
if (a == b) e veja o resultado.
== é para tipos primitivos apenas. String em java é objeto
o == pode até funcionar, mas sér apenas sorte sua.
tá falando sério? com mais de 100 mensagens, várias no java avançado…
bomfaçaa
String a = “Brasil”;
String b = “Brasil”;depois faça
if (a == b)e veja o resultado.
== é para tipos primitivos apenas. String em java é objeto
o == pode até funcionar, mas sér apenas sorte sua.
Ainda não entendi muito bem, eu li agora em um lugar aki que usamos == para comparar de dois primitivos apontam para o mesmo objeto e o equals() usamos para saber se o conteúdo de dois objetos forem iguais…
e qual a sua dúvida agora?
Na moral, eu ainda não consigo ver diferença entre os dois, se eu fizesse a prova do exame agora eu me borava todo nessa parte
a == b compara se a e b apontam para mesma área de memória, se o conteúdo de ambos for “abc” e, no entanto, forem pontos diferentes de memória não será igual.
a.equals(b) compara o conteúdo de a com o conteúdo de b, se ambas forem “abc” será igual.
Na moral, eu ainda não consigo ver diferença entre os dois, se eu fizesse a prova do exame agora eu me borava todo nessa parte
Ir fazer a prova sem saber isso é dose hein! Compra um livro e estuda! 
tá falando sério? com mais de 100 mensagens, várias no java avançado…
bomfaçaa
String a = “Brasil”;
String b = “Brasil”;depois faça
if (a == b)e veja o resultado.
== é para tipos primitivos apenas. String em java é objeto
o == pode até funcionar, mas sér apenas sorte sua.Ainda não entendi muito bem, eu li agora em um lugar aki que usamos == para comparar de dois primitivos apontam para o mesmo objeto e o equals() usamos para saber se o conteúdo de dois objetos forem iguais…
heheh… vc sabe a resposta a tá com duvida…
essa eh no minimo engraçada… :lol:
Na moral, eu ainda não consigo ver diferença entre os dois, se eu fizesse a prova do exame agora eu me borava todo nessa parte
Ir fazer a prova sem saber isso é dose hein! Compra um livro e estuda! 
Eu acho que é final do dia e eu já não estou conseguindo raciocinar direito, não consegui entender essa história de apontar para a mesma área de memória, então seria melhor usar equals() sempre…
No caso de Strings às vezes a == b é o mesmo que a.equals(b) por economia de memória, mas o certo é usar a.equals(a). Com Strings passadas como parâmetro acho que isso não funciona.
Na moral, eu ainda não consigo ver diferença entre os dois, se eu fizesse a prova do exame agora eu me borava todo nessa parte
Ir fazer a prova sem saber isso é dose hein! Compra um livro e estuda! 
Eu acho que é final do dia e eu já não estou conseguindo raciocinar direito, não consegui entender essa história de apontar para a mesma área de memória, então seria melhor usar equals() sempre…
hehe… pelo jeito tá lesado ainda…
mas depende… se quer olha conteudo sim… se quer ver se duas referencias aponta pro msm objeto use == … agora caso esteja usando tipos primitivos… ai se vc só pode usar ==
Veja assim:
“==” compara objetos
"equals" compara valores (conteúdo)
EX:
String a = “abc”;
String b =a;
String c = new String();
c = a;
‘a’ é igual a ‘b’, ou seja, aponta para o mesmo local na memória.
‘c’ != ‘b’ e ‘a’, porém ter o mesmo valor das demais variáveis.
public class Excompara {
String a = "abc";
String b =a;
String c = new String();
public Excompara() {
c=a;
System.out.println("'a' e 'b' sao o mesmo objeto? "+a==b);
System.out.println("'a' e 'b' tem o mesmo valor? "+a.equals(b));
System.out.println("'a' e 'c' sao o mesmo objeto? "+a==c);
System.out.println("'a' e 'c' tem o mesmo valor? "+c.equals(a));
}
public static void main(String[] args) {
new Excompara();
}
}
Explicar equals versus == usando Strings como exemplo eh uma pessima ideia, por causa do mecanismo de intern()'ing da VM, desenvolvido pra dar uma aumentada na performance e diminuir o consumo de memoria.
Como assim cv? Gostaria de saber mais, por que causa essa latência? :lol:
== :Verifica se duas variaveis de referencia está referenciando o Mesmo Objeto no Heap…se refrerenciar retorna true. quando utilizada em primitivos,verifica se as variaveis sao do mesmo tipo e se contem os mesmos valores…
Sao consideradas iguais por economia de memoria se seus valores primitivos forem os mesmos:
:idea: Boolean
:idea: Byte
:idea: Character
:idea: Short e Interger de -128 até 127
se os inteiros passarem desse intervalo de valores…serao consigerados diferente por ==
equals() :Verifica se duas variaveis estao referenciando objetos que tem os memsos valores…no heap
public static void main(String[] args) {
String s=new String(“abc”); //um objeto com valor "abc"
String b=new String(“abc”); //outro objeto com valor "abc"
String ss=“abc”; //outro objeto com valor “abc” …porem diferente do criado anterior…
String bb=“abc”; //outro objeto com valor “abc” …porem igual ao anterior…
String c=s;// apontando “c” para o objeto que “s” aponta…
if(s==b){ //‘s’ e ‘b’ apesar dos mesmos valores…sao objetos diferentes no heap…retorna false
System.out.println(“s == b”);
}
if(s.equals(b)){ //‘s’ e ‘b’ apesar de ser objetos diferentes contem o mesmo valor
System.out.println(“s.equal(b)”);
}
if(ss==bb){ // 'ss' e 'bb' está apontando para o mesmo objeto no heap e contem os mesmo valores..retorna true
System.out.println("ss == bb");
}
if(ss.equals(bb)){
System.out.println("ss.equal(bb)");//retorna true..tambem
}
if(c==s){ //como 'c' esta recebendo a referencia de 's' que aponta para o objeto string..entao sao iguais..retorna true..
System.out.println("c == s");
}
if(c.equals(s)){
System.out.println("c.equal(s)");//true
}}}
resultado:
s.equal(b)
ss == bb
ss.equal(bb)
c == s
c.equal(s)