No existeix un programador que no tingui problemes amb null. Tots els llenguatges de programació l’inclouen. Mira aquests punts interessants de null en Java!
En Java, null està associat a java.lang.NullPointerException. Com és una classe en el paquet java.lang, s’invoca quan intentem fer algunes operacions amb o sense null i, de vegades, ni tan sols sabem on ha passat.
A continuació es detallen alguns punts importants sobre null en Java que tot programador de Java ha de saber:
Table de contingut
1. null és Casi sensitive
null és literal en Java i perquè les paraules clau distingeixen entre majúscules i minúscules en java, no podem escriure 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; }}
Sortida:
error: cannot find symbol can't find symbol 'NULL' ^ variable NULL class Test1 error
2. valor de variable de referència
Qualsevol variable de referència en Java té un valor predeterminat nul.
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); } }
Sortida:
El valor del objeto obj es : null
3. Tipus d’null
A diferència de la idea errònia comuna, null no és un objecte ni un tipus. És només un valor especial, que es pot assignar a qualsevol tipus de referència i es pot castear null a qualsevol tipus.
Exemples:
// 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 i sense caixa
Durant les operacions d’auto-boxing i unboxing, el compilador simplement llança un error d’excepció Nullpointer si s’assigna un valor nul a el tipus de dades en requadre primitiu.
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; }}
Sortida:
Exception in thread "main" java.lang.NullPointerException at Test.main
5. operador instanceof
l’operador instanceof de Java s’usa per provar si l’objecte és una instància de l’tipus especificat (classe, subclasse o interfície). En temps d’execució, el resultat de l’operador instanceof és veritable si el valor de l’expressió no és nul.
Aquesta és una propietat important de l’operació instanceof, que el fa útil per a les verificacions de conversió de tipus .
Exemple:
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); }}
Sortida:
falsetrue
6. Mètodes estàtics vs no estàtics
no podem trucar a un mètode no estàtic en una variable de referència amb valor nul, llançarà NullPointerException, però podem trucar a mètode estàtic amb variables de referència amb valors nuls.
Com que els mètodes estàtics estan vinculats mitjançant l’enllaç estàtic, no llançaran 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"); } }
Sortida: