Al comparar dos valores en Java, ¿cómo se prueba si ambos, el tipo y el valor, son equivalentes?
Sé que en JavaScript ===
se puede utilizar para lograr esto, así que traté de que en Java, pero no funcionó.
Sé que esto es una cuestión sencilla, pero traté de mirar hacia arriba y no pude averiguar lo que era.
TL; DR
En Java no es tal operador de una comparación: ===
, pero ==
oequals
Una explicación más largo
En tipos débiles lenguajes como JavaScript se puede utilizar el operador de comparación estricta ( ===
) porque el lenguaje permite la comparación entre las variables que tienen diferentes tipos .
Por ejemplo, en JavaScript, no obtendrá un error de compilación si hace esto:
var x = 10;
var y = 'foo';
console.log(x == y); // false
Y es útil, cuando se quiere comparar las variables que pueden contener valores que son "iguales", pero pueden ser de diferentes tipos.
Por ejemplo
var x = 10;
var y = '10';
console.log(x == y) // true
console.log(x === y) // false
En inflexible lenguajes como Java, no es necesario utilizar un operador de comparación estricta porque el idioma ya "asas" la comparación de tipos.
Por ejemplo:
int x = 10;
String y = "10";
System.out.println("10" == y); // true
System.out.println(x == y); // compile error : Incompatible operand types int and String
Así que, básicamente, en Java, no hay necesidad de que la comprobación de rigurosidad usando ===
(un error de sintaxis se informó).
En primer lugar, el compilador se quejará cuando se comparan los valores de diferentes tipos utilizando el ==
operador y la conversión no se puede realizar.
En el ejemplo anterior de código Java, si desea hacer una comparación entre x
y y
se puede utilizar equals
:
int x = 10;
String y = "10";
System.out.println(y.equals(x)); // compile warning: Unlikely argument type for equals(): int seems to be unrelated to String
Como nota al margen, observe el equals
método no puede ser llamado en los tipos primitivos.
Algunas lecturas útiles son: