La diferencia entre iguales y == en Java
Los tipos de datos en Java se pueden dividir en dos categorías:
1. Tipo de datos básicos, también conocido como tipo de datos primitivos. Byte, Short, Char, int, Long, Float, Double, Boolean
La comparación entre ellos, aplicando un signo doble (==), se compara con sus valores.
2. Tipo de datos de compuesto (clase)
Cuando se comparan con (==), comparan su dirección de almacenamiento en la memoria. Por lo tanto, a menos que sean objetos de lo mismo nuevo, el resultado después de la comparación es verdadero, de lo contrario, el resultado después de la comparación es falso. Todas las clases en Java heredan del objeto de clase base. Un método de igual se define en la clase base en el objeto. El comportamiento inicial de este método es la dirección de memoria del objeto de comparación, pero en algunas bibliotecas de clases, este método se sobrescribe. Por ejemplo, la cadena, el entero y la fecha tienen su propia implementación en estas clases, y ya no son la dirección de almacenamiento de la clase de comparación en la memoria del montón.
Para una comparación igual entre los tipos de datos compuestos, sin sobrescribir el método igual, su comparación se basa en el valor de la dirección de su ubicación de almacenamiento en la memoria. Debido a que el método igual de objeto también se compara con un signo doble igual (==), por lo que el resultado después de la comparación es el mismo que el resultado del signo doble igual (==).
La diferencia entre Java es igual y =, ==
1. La diferencia entre == y igual
1. == es el operador
2. Igual es un método de objeto de cadena
Generalmente hay dos tipos de comparaciones
1. Comparación de tipos de datos básicos
2. Comparación de objetos de referencia
1. Comparación de tipos de datos básicos
== y igual compare si los valores son iguales, si son iguales, es verdadero, de lo contrario es falso
2. Comparación de objetos de referencia
== y iguales se comparan con si las direcciones en la memoria de la pila son iguales. Si es igual, es verdadero, de lo contrario es falso.
Aviso:
1. La cadena es un tipo de datos de referencia especial. == Compara si la dirección de referencia del objeto de cadena es la misma, y es igual a compara si el contenido en la pila es consistente.
Cadena ss = nueva cadena ("ABC"); String sss = new String ("ABC"); if (ss == sss) {system.out.println ("ss == sss es verdadero"); } if (ss.equals (sss)) {system.out.println ("ss igual sss es verdadero"); }Salida de la consola:
ss! = sss
SS es igual a SSS
Indica que las direcciones de memoria de SS y SS en la pila son diferentes, pero los contenidos en el montón son las mismas.
Cadena ss = nueva cadena ("ABC");
Cadena ssss = ss;
// juzga si las direcciones de referencia de SS y SSSS en la pila son las mismas si (SS == SSSS) {System.out.println ("SS == SSSS"); } else {System.out.println ("ss! = ssss"); } // juzga si el contenido de SS y SSSS en el montón es el mismo si (SS.Equals (SSSS)) {System.out.println ("SS es igual a SSSS"); } else {System.out.println ("SS no es igual a SSSS"); }Salida de la consola:
SS == SSSS
SS es igual a SSSS
Esto muestra que SS y SSSS son los mismos objetos y que tienen el mismo contenido en el montón
2. Comparación de objetos de referencia
Testbean obj1 = new testBean (); Testbean obj2 = new testBean (); Testbean obj3 = obj1; if (obj1 == obj2) {system.out.println ("obj1 == obj2"); } else {system.out.println ("obj1! = obj2"); } if (obj1 == obj3) {system.out.println ("obj1 == obj3"); } else {system.out.println ("obj1! = obj3"); }Salida de la consola:
obj1! = obj2
obj1 == obj3
Significa que OBJ1 y OBJ2 no son el mismo objeto, y la dirección de referencia en la pila es diferente
obj1 y obj3 son los mismos objetos, y la dirección de referencia en la pila es la misma
2. La diferencia entre = y igual ==
= representa la asignación, es decir, asigne el valor a la derecha de = a la variable a la izquierda. iguales y == son las operaciones
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!