Este es el primer post de la nueva categoría que he denominado «Sabias que…», donde les iré contando cosas que me resultan curiosas e interesantes sin que por eso no dejen de ser algunas veces «triviales», en esta oportunidad les contare algo que algunos puede que desconozcan e incluso puede que llegue a serles útil en el caso de buscar certificarse.
Sin más preámbulos, así como dice el titulo, por defecto todos los literales enteros que declaremos en nuestro programa Java, serán compilados como int (entero). Lo demostrare mediante el siguiente ejemplo, que consistirá de una función que validará el rango de un número entero. Realmente es un ejemplo sencillo pero que cumple con el objetivo del post. A continuación el código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class DefaultLiteralExample { public static boolean validarRangoEntero(long valor, long min, long max){ if((min <= valor) && (valor <= max)) return true; return false; } public static void main(String args[]){ //Se podría suponer que habia un cast automatico //pero NO es asi validarRangoEntero(30, 1, 9999999999); } } |
Si compilan el código mostrado anteriormente, les aparecería el mensaje
1 2 |
DefaultLiteralExample.java:14: integer number too large: 9999999999 validarRangoEntero(30, 1, 9999999999); |
Si hacen uso del IDE Eclipse les aparecería el mensaje «The literal 9999999999 of type int is out of range».
Es un error de compilación que se resuelve sencillamente agregando la letra «L», al literal quedando de esta manera 9999999999L.
Como pueden ver es algo muy sencillo, incluso para algunos será trivial pero les aseguro que en una prueba de certificación mas de uno de seguro se equivocaría y diría que el código se compila perfectamente, asumiendo un cast automático.
Si deseas compartir con nosotros eso que te parece interesante y/o curioso, no dudes en hacerlo, así todos aprenderemos.