Qual é a comparação entre iguais e ==?
1. TEM booleano = a == b;
Primeiro de tudo, == A comparação é definitivamente o endereço. Da perspectiva da pilha, isto é, == A comparação é o conteúdo da pilha. Como a pilha é usada para armazenar os valores literais de variáveis automáticas nos oito tipos básicos em Java (variáveis automáticas são variáveis definidas na forma de int a = 1;). Se for um valor automático de comparação de variáveis, é definitivamente usado para compará -lo com ==, porque o Equals () é um método, portanto, deve ser chamado por um objeto a ser usado para comparação. Variáveis automáticas não são instâncias de classes nem referências de classes; portanto, o método iguals () não pode ser usado.
2.Boolean TEM = A.Equals ("B");
O método iguals () é geralmente usado para comparar o conteúdo de um objeto, mas em alguns casos também compara os endereços de dois objetos.
Próximo
Escreva um programa de teste
pacote com; importar java.util.date; public class Test {public static void main (string [] args) {integer integer1 = new integer (1); Número inteiro inteiro2 = novo número inteiro (1); String str1 = new string ("123"); String str2 = new String ("123"); Data date1 = new Date (); Data date2 = new Date (); Duplo duplo1 = novo duplo ("1.0"); Duplo duplo2 = novo duplo ("1.0"); Boolean TEM1 = novo booleano (true); BOOLEAN TEM2 = novo booleano (verdadeiro); Objeto objeto1 = new Object (); Objeto objeto2 = new Object (); System.out.println ("---- Object -------"); System.out.println (object1.equals (object2)); System.out.println (object1 == object2); System.out.println (object1.equals (object1)); System.out.println (object1 == object1); System.out.println ("-----------"); System.out.println (TEM1.Equals (TEM2)); System.out.println (TEM1 == TEM2); System.out.println ("--- Double --------"); System.out.println (Double1.Equals (Double2)); System.out.println (Double1 == Double2); System.out.println ("-----------"); System.out.println (Integer1.equals (Integer2)); System.out.println (Integer1 == Integer2); System.out.println ("------------"); System.out.println (str1.equals (str2)); System.out.println (str1 == str2); System.out.println ("-----------"); System.out.println ("------------"); System.out.println (str1 == str2); System.out.println ("-----------"); System.out.println (date1.equals (date2)); System.out.println (date1 == date2); }}resultado:
---Objeto-----
falso
falso
verdadeiro
verdadeiro
--- booleano -----
verdadeiro
falso
---Dobro-----
verdadeiro
falso
--- Inteiro -----
verdadeiro
falso
---Corda-----
verdadeiro
falso
---Data-----
verdadeiro
falso
Primeiro, quando os dois objetos comparados são os mesmos, os resultados de == e iguais () são verdadeiros e, quando os dois objetos são diferentes, eles são retornados falsos. Então, quando == e iguais são usados para comparar objetos, eles comparam o endereço do objeto, mas na verdade a essência é a mesma. Aqui está o código do método iguals () na classe de objeto:
public boolean é igual (objeto obj) {return (this == obj); }Para boolean, dupla (flutuação), interger (tiro, longa), string e data, também encontrei seus códigos de origem. Abaixo, publiquei os códigos de origem do método iguals () em booleano, duplo, interger, string e data. No momento, o método Equals () foi reescrito porque essas classes são herdadas da classe de objeto.
Booleano:
public boolean é igual (objeto obj) {if (obj instanceof boolean) {retorna value == ((boolean) obj) .BooleanValue (); } retornar false; }Dobro:
public boolean é igual a (object obj) {return (obj instanceof duplo) && (DoubleTolongbits (((duplo) obj) .Value) == DoubleTolongBits (valor)); }Interger:
public boolean é igual (objeto obj) {if (obj instanceof integer) {return value == ((integer) obj) .IntValue (); } retornar false; } Corda:
public boolean é igual (objeto anobject) {if (this == AnoBject) {return true; } if (anobject instanceof string) {string anototherstring = (string) anobject; int n = value.length; if (n == anotherstring.value.length) {char v1 [] = value; char v2 [] = anototherstring.value; int i = 0; while (n--! = 0) {if (v1 [i]! = v2 [i]) retorna false; i ++; } retornar true; }} retornar false; }Data:
public boolean é igual (object obj) {return obj instanceof date && gettime () == ((date) obj) .gettime (); }Em outras palavras, nesses momentos, o método iguals () da classe de objeto é reescrito para comparar o conteúdo real de dois objetos e não mais o endereço. Claro, definitivamente não são apenas estes. Aqui estão apenas alguns casos comuns em que as classes nativas de Java reescrevem o método iguals () da classe de objeto.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!