No existe un programador que no tenga problemas con null. Todos los lenguajes de programación lo incluyen. Mira estos puntos interesantes de null en Java!
En Java, null está asociado a java.lang.NullPointerException. Como es una clase en el paquete java.lang, se invoca cuando intentamos realizar algunas operaciones con o sin null y, a veces, ni siquiera sabemos dónde ha sucedido.
A continuación se detallan algunos puntos importantes sobre null en Java que todo programador de Java debe saber:
1. null es Case sensitive
null es literal en Java y porque las palabras clave distinguen entre mayúsculas y minúsculas en java, no podemos escribir NULL o 0.
public class Test { public static void main (String[] args) throws java.lang.Exception { // error en tiempo de compilación: no se puede encontrar el símbolo 'NULL' Object obj = NULL; //lo siguiente se ejecuta con éxito Object obj1 = null; } }
Salida:
error: cannot find symbol can't find symbol 'NULL' ^ variable NULL class Test 1 error
2. Valor de variable de referencia
Cualquier variable de referencia en Java tiene un valor predeterminado nulo.
public class Test { private static Object obj; public static void main(String args[]) { // imprimira nulo; System.out.println("El valor del objeto obj es : " + obj); } }
Salida:
El valor del objeto obj es : null
3. Tipo de null
A diferencia de la idea errónea común, null no es un objeto ni un tipo. Es solo un valor especial, que se puede asignar a cualquier tipo de referencia y se puede castear null a cualquier tipo.
Ejemplos:
// null se puede asignar a String String str = null; // tambien puedes asignar null a Integer Integer itr = null; // null también se puede asignar a Double Double dbl = null; //null se puede castear a String String myStr = (String) null; // también puede ser casteado a Integer Integer myItr = (Integer) null; // si es posible, no hay error Double myDbl = (Double) null;
4. Autoboxing y unboxing
Durante las operaciones de auto-boxing y unboxing, el compilador simplemente arroja un error de excepción Nullpointer si se asigna un valor nulo al tipo de datos en recuadro primitivo.
public class Test { public static void main (String[] args) throws java.lang.Exception { //Un número entero puede ser nulo, así que esto está bien Integer i = null; //Unboxing null a integer lanza NullpointerException int a = i; } }
Salida:
Exception in thread "main" java.lang.NullPointerException at Test.main
5. Operador instanceof
El operador instanceof de Java se usa para probar si el objeto es una instancia del tipo especificado (clase, subclase o interfaz). En tiempo de ejecución, el resultado del operador instanceof es verdadero si el valor de la expresión no es nulo.
Esta es una propiedad importante de la operación instanceof, que lo hace útil para las verificaciones de conversión de tipo.
Ejemplo:
public class Test { public static void main (String[] args) throws java.lang.Exception { Integer i = null; Integer j = 10; //imprime false System.out.println(i instanceof Integer); //Compila con exito System.out.println(j instanceof Integer); } }
Salida:
false true
6. Métodos estáticos vs no estáticos
No podemos llamar a un método no estático en una variable de referencia con valor nulo, arrojará NullPointerException, pero podemos llamar al método estático con variables de referencia con valores nulos.
Como los métodos estáticos están vinculados mediante el enlace estático, no lanzarán NullPointerException.
public class Test { public static void main(String args[]) { Test obj= null; obj.staticMethod(); obj.nonStaticMethod(); } private static void staticMethod() { //Puede ser llamado por referencia nula System.out.println("metodo estatico, puede ser llamado por referencia nula"); } private void nonStaticMethod() { //Can not be called by null reference System.out.print(" Metodo no estatico- "); System.out.println("no puede ser llamado por referencia nula"); } }
Salida:
Exception in thread "main" java.lang.NullPointerException at Test.main metodo estatico, puede ser llamado por referencia nula
7. == y !=
Esto puede ser útil en la comprobación de null con objetos en Java.
public class Test { public static void main(String args[]) { //return true; System.out.println(null==null); //return false; System.out.println(null!=null); } }
Salida:
true false
Null en Java
- Puntos Interesantes - 10/1010/10
Resumen
Se detallan algunos puntos importantes sobre null en Java que todo programador de Java debe saber ¿o ya lo sabías?