Duvida no uso operdor "=="

5 respostas
P

Olá ,

uma duvida conforme exemplo a abaixo quando uso
metodo estatico na referencia do objeto e faço a comparação
a ==b é igual se fosse outro objeto como

JButton a = new JButton("Exit");
JButton b = new JButton("Exit");

    if (a==b){
    	System.out.println("a=b");
        }//false

seria igual …por que ???

abs

Runtime a = Runtime.getRuntime();
    Runtime b = Runtime.getRuntime();
    Runtime c = a;

    if (a==b){
    	System.out.println("a=b");
    	
    }else{
    	System.out.println("a!=b=");
    }
    if (a==c){
    	System.out.println("a=c");
    }

5 Respostas

X

Cara, acredito que seja pq, usando classes, ele compara o endereço do objeto...

e qdo vc coloca, por exemplo:

import javax.swing.JButton;


public class Teste {
	public static void main(String args[]){
		JButton a = new JButton("Exit");
		JButton b = new JButton("Exit");
		a=b;
		    if (a==b){
		    	System.out.println("a=b");
		        }


	}
}

Ele passa apenas o endereço para o A.

Espero que entenda...

abraços

victorwss
JButton a = new JButton("Exit"); // Cria um objeto a.
JButton b = new JButton("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!

Runtime c = Runtime.getRuntime(); // Pega O runtime (só existe um).
Runtime d = 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.:

JButton a = new JButton("Exit");  
 JButton b = a;
 if (a==b){
   sysout("isso é verdade");
 }

  JButton c = new JButton("Exit");  
  JButton d = new JButton("Exit"); 

 if (c==d){
   sysout("...");
 } else {
   sysout("isso é falso");
 }
X

é 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…

Criado 7 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 5
Participantes 5