El operador == es un tipo de operador relacional en Java que se utiliza para comprobar las relaciones de igualdad. Devuelve un resultado booleano después de la comparación y se usa ampliamente en declaraciones de bucle y declaraciones condicionales if-else .
Sintaxis:
LHS value == RHS value
Pero, al comparar estos valores, generalmente surgen tres casos:
Caso 1: cuando los valores LHS y RHS son primitivos
Este es el más simple de los casos. Como los datos primitivos se almacenan en la memoria de la pila , en este caso, el valor real de ambos lados se obtiene de la memoria de la pila y se compara. Devuelve verdadero si ambos son iguales, de lo contrario devuelve falso.
Sintaxis:
Actual value == Actual value
Ejemplo:
Java
// Java program for using == operator import java.io.*; public class GFG { public static void main(String[] args) { // Declaring primitive values int a = 4; int b = 4; int c = 5; // Comparing a and b using == operator System.out.println("Are " + a + " and " + b + " equal? " + (a == b)); // Comparing b and c using == operator System.out.println("Are " + b + " and " + c + " equal? " + (b == c)); } }
Are 4 and 4 equal? true Are 4 and 5 equal? false
Caso 2: Cuando uno de los valores LHS y RHS es primitivo, y el otro es una referencia
En este escenario, para el lado primitivo, el valor real se toma para comparación de la memoria de pila. Pero para el lado de la referencia, cuando se declara e inicializa una array, los datos se almacenan en la memoria del montón y el puntero de referencia en la memoria de la pila. Así que todo lo que está en la memoria de pila es la dirección de memoria.
Sintaxis:
Actual value == Address value OR Address value == Actual value
Entonces, cuando se toma la comparación entre un valor primitivo y un valor de referencia, el programa no compila y arroja un error:
Error de compilación en código Java: –
prog.java:20: error: incomparable types: int and int[] + (a == b)); ^ 1 error
Esto se debe a que el valor para el lado primitivo se obtiene fácilmente de la memoria de la pila, pero para el lado de referencia, el valor no se puede obtener ya que el valor está en la memoria del montón. De ahí el error.
Ejemplo:
Java
// Java program for using == operator import java.io.*; public class GFG { public static void main(String[] args) { // Declaring primitive value int a = 4; // Declaring reference value int[] b = { 1, 2, 3, 4 }; // Comparing a and b using == operator System.out.println("Are " + a + " and " + b + " equal? " + (a == b)); } }
prog.java:17: error: bad operand types for binary operator '==' + " equal? " + (a == b)); ^ first type: int second type: int[] 1 error
Caso 3: Cuando los valores LHS y RHS son referencia
En este escenario, para ambos lados, cuando se declara e inicializa una array, los datos se almacenan en la memoria del montón y el puntero de referencia en la memoria de la pila. Entonces, ambas variables, se verifica su dirección. Si ambas variables apuntan a la misma dirección de memoria, este operador devuelve verdadero. De lo contrario, devuelve falso.
Sintaxis:
Address value == Address value
Ejemplo:
Java
// Java program for using == operator import java.io.*; public class GFG { public static void main(String[] args) { // Declaring reference value int[] a = { 1, 2, 3, 4 }; int[] b = { 1, 2, 3, 4 }; int[] c = b; // Comparing a and b using == operator // Though they both have the same value // the output will be false because // they both have a different address in the memory System.out.println("Are a and b equal? " + (a == b)); // Comparing b and c using == operator // Though they both have the same value // the output will be true because // they both have same address in the memory System.out.println("Are b and c equal? " + (b == c)); } }
Are a and b equal? false Are b and c equal? true
Publicación traducida automáticamente
Artículo escrito por ShivendraPorwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA