JButtona=newJButton("Exit"); // Cria um objeto a.JButtonb=newJButton("Exit"); // Cria um OUTRO objeto b idêntico a a.
Ou seja, a e b são “irmãos gêmeos”, mas não são a mesma pessoa!
Runtimec=Runtime.getRuntime();// Pega O runtime (só existe um).Runtimed=Runtime.getRuntime();// Pega O runtime de novo (o mesmo runtime).
O método estático retorna sempre a mesma instância, enquanto que o operador new sempre-sempre-sempre estará criando uma nova instância.
Daí == para objetos compara se eles são a mesma pessoa. Se fulano é irmão gêmeo de ciclano então fulano==ciclano é falso.
O método equals serve para comparar se dois objetos são iguais. Portanto se fulano é gêmeo de ciclano então fulano.equals(ciclano) é verdadeiro.
baudamix
Cara, acredito que seja pq, usando classes, ele compara o endereço do objeto...
é exatamente o oposto do que vc afirmou, não são iguais pois o endereço são diferentes...
uma comparação == só é igual para tipos primitivos...
logo qdo vc compara objetos vc está comparando o endereço da memória onde o objetos está alocado.
ex.:
JButtona=newJButton("Exit"); JButtonb=a;if(a==b){
sysout("isso é verdade");}
JButtonc=newJButton("Exit"); JButtond=newJButton("Exit"); if(c==d){
sysout("...");}else{
sysout("isso é falso");}
X
xxta
é exatamente o oposto do que vc afirmou, não são iguais pois o endereço são diferentes…
uma comparação == só é igual para tipos primitivos…
Desculpe, acho que me expressei mal. Eu quis dizer exatamente isso, que usando o “==” ele compara os endereços e que a cada NEW ele cria um novo endereço.
LPJava
com objetos usa equals() porem nao sei se a class JButton implementa equals() caso nao, tem que subscrever!!
== é para testar referencias
equals() os valores em sim…