Tots i cadascun dels llenguatges de programació, inclòs Java, estan limitats amb null. No hi ha cap programador que no hagi tingut cap problema al codi relacionat amb null. Els programadors s'enfronten principalment NullPointerException quan intenten realitzar algunes operacions amb dades nul·les. NullPointerException és una classe disponible que pertany al paquet java.lang.
Abans d'entendre els fets de null, cal tenir coneixements de variables Java. Si no saps què variable Java és a dir, aneu al següent enllaç:
Tots i cadascun dels desenvolupadors haurien de tenir coneixements sobre els següents fets de null a Java:
Cas delicat
A Java, no podem escriure null com a NULL o 0 com a la programació C perquè null és un literal i les paraules clau són sensibles a majúscules i minúscules a Java.
Prenguem un exemple per entendre el comportament que distingeix entre majúscules i minúscules de null.
NullExample1.java
// import classes and packages if any public class NullExample1 { // main() method start public static void main (String[] args) throws java.lang.Exception { // declare and initialize an object with NULL Object obj1 = NULL; // declare and initialize an object with null Object obj2 = null; // print both objects System.out.println('The value of obj1 is: '+obj1); System.out.println('The value of obj2 is: '+obj2); } }
Sortida:
Valor de la variable de referència
Per defecte, totes i cadascuna de les variables de referència tenen un valor nul a Java. Una variable de referència s'utilitza per indicar i emmagatzemar objectes/valors de tipus de referència a Java. Classes, matrius, enumeracions i interfícies, etc., són alguns tipus de referència a Java.
Per tant, un tipus de referència emmagatzema un valor nul si no es passa cap objecte a un tipus de referència.
Prenguem un exemple per entendre com funciona una variable de referència per a un valor nul:
NullExample2.java
botó central css
// import classes and packages if any public class NullExample2 { // declare two objects private static Object obj1; private static Object obj2; // main() method start public static void main (String[] args) { // print both objects System.out.println('The value of obj1 is: '+obj1); System.out.println('The value of obj2 is: '+obj2); } }
Sortida:
Tipus nul
A Java, null no és ni un objecte ni un tipus. És un valor especial que podem assignar a qualsevol variable de tipus de referència. Podem emetre null a qualsevol tipus en què vulguem, com string, int, double, etc.
Prenguem un exemple per entendre com podem assignar valors nuls a qualsevol tipus de referència.
NullExample3.java
// import classes and packages if any public class NullExample3 { // main() method start public static void main (String[] args) { // pass a null value to a different type of variable // pass null to String String str = null; // pass null to Integer Integer itr = null; // pass null to Double Double dbl = null; // casting null to String String castedStr = (String)null; // casting null to Integer Integer castedItr = (Integer)null; // casting null to Double Double castedDbl = (Double)null; // print all reference type System.out.println('The value of str is: '+str); System.out.println('The value of itr is: '+itr); System.out.println('The value of dbl is: '+dbl); System.out.println('The value of castedStr is: '+castedStr); System.out.println('The value of castedItr is: '+castedItr); System.out.println('The value of castedDbl is: '+castedDbl); } }
Sortida:
Autoboxing i Unboxing
Autoboxing i Unboxing són les dues operacions més importants que fem a Java. El compilador llança NullPointerException quan assignem un valor nul a qualsevol tipus de dades en caixa primitiu mentre realitzem les operacions.
Prenguem un exemple per entendre l'autoboxing i el fet unboxing de null.
NullExample4.java
// import classes and packages if any public class NullExample4 { // main() method start public static void main (String[] args) throws java.lang.Exception { // pass null value to a reference type Integer itr = null; // perform unboxing operation int data = itr; // print both objects System.out.println('The value of itr is: '+itr); System.out.println('The value of data is: '+data); } }
Sortida:
La instància de l'operador
Per comprovar si an objecte és una instància del tipus especificat o no, fem servir el en lloc de operador. El en lloc de L'operador retorna true quan el valor de l'expressió no és nul en temps d'execució. Té un paper important en les comprovacions de tipografia.
Posem un exemple per entendre el en lloc de operador:
NullExample5.java
// import classes and packages if any public class { // main() method start public static void main (String[] args) throws java.lang.Exception { // pass null value to a reference type Integer m = null; // pass a value to a reference type Integer n = 20; // print instanceof values System.out.println(m instanceof Integer); System.out.println(n instanceof Integer); } }
Sortida:
Estàtica vs. Mètodes no estàtics
No podem cridar un mètode no estàtic en una variable de referència amb un valor nul. Si l'anomenem, llançarà NullPointerException, però podem cridar al mètode estàtic amb variables de referència amb valors nuls. Com que els mètodes estàtics s'uneixen mitjançant l'enllaç estàtic, no llançaran l'excepció de punter nul.
Prenguem un exemple per entendre el fet de null:
NullExample6.java
// import classes and packages if any public class NullExample6 { // define static method public static void staticMethod() { //it can be called by using a null reference System.out.println('static method can be called by null reference.'); } // define non static method public void nonStaticMethod() { //it cannot be called by using a null reference System.out.println('static method cannot be called by a null reference.'); } // main() method start public static void main (String[] args) throws java.lang.Exception { NullExample6 exp = null; exp.staticMethod(); exp.nonStaticMethod(); } }
Sortida:
== i != Operadors
A Java, aquests dos operadors es permeten amb null. Tots dos operadors són útils per comprovar null amb objectes a Java.
matemàtiques java aleatòria
Prenguem un exemple per entendre com funcionen aquests dos operadors amb null.
NullExample7.java
// import classes and packages if any public class NullExample7 { // main() method start public static void main (String[] args) { // pass null value to String type of variables // pass null to str1 String str1 = null; // pass null to str2 String str2 = null; // pass null to str3 String str3 = 'Test'; // compare strings if(str1 == str2){ System.out.println('str1 and str2 both are equal'); }else{ System.out.println('str1 and str2 are not equal'); } if(str2 == str3){ System.out.println('str2 and str3 both are equal'); }else{ System.out.println('str2 and str3 are not equal'); } if(str3 == str1){ System.out.println('str3 and str1 both are equal'); }else{ System.out.println('str3 and str1 are not equal'); } } }
Sortida:
Tots i cadascun dels desenvolupadors de Java haurien de tenir coneixement de tots els fets de null comentats anteriorment.