Varje programmeringsspråk, inklusive Java, är begränsat till null. Det finns ingen programmerare som inte stötte på några problem i koden relaterad till null. Programmerare möter främst NullPointerException när de försöker utföra vissa operationer med nolldata. NullPointerException är en tillgänglig klass som tillhör paketet java.lang.
Innan du förstår fakta om null, krävs det att du har kunskap om Java-variabler. Om du inte vet vad Java-variabel är, gå igenom följande länk:
Varje utvecklare bör ha kunskap om följande fakta om null i Java:
Skiftlägeskänsliga
I Java kan vi inte skriva null som NULL eller 0 som i C-programmering eftersom null är en bokstavlig och nyckelord är skiftlägeskänsliga i Java.
Låt oss ta ett exempel för att förstå det skiftlägeskänsliga beteendet hos 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); } }
Produktion:
Referensvariabelvärde
Som standard har varje referensvariabel ett nollvärde i Java. En referensvariabel används för att indikera och lagra objekt/värden av referenstyp i Java. Klasser, arrayer, uppräkningar och gränssnitt, etc., är några referenstyper i Java.
Så, en referenstyp lagrar ett nollvärde om inget objekt skickas till en referenstyp.
Låt oss ta ett exempel för att förstå hur en referensvariabel fungerar för nullvärde:
NullExample2.java
// 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); } }
Produktion:
Noll typ
I Java är null varken ett objekt eller en typ. Det är ett speciellt värde som vi kan tilldela vilken referenstypsvariabel som helst. Vi kan gjuta noll i vilken typ vi vill, som sträng, int, dubbel, etc.
Låt oss ta ett exempel för att förstå hur vi kan tilldela nollvärden till vilken referenstyp som helst.
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); } }
Produktion:
strängar till heltal
Autoboxning och Unboxing
Autoboxning och Unboxing är de två viktigaste operationerna som vi utför i Java. Kompilatorn kastar NullPointerException när vi tilldelar ett nollvärde till en primitiv inramad datatyp medan vi utför operationerna.
Låt oss ta ett exempel för att förstå autoboxning och unboxing-faktumet av 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); } }
Produktion:
Operatörens instans
För att kontrollera om en objekt är en instans av den angivna typen eller inte, använder vi instans av operatör. De instans av operatorn returnerar true när uttryckets värde inte är null vid körning. Det spelar en viktig roll i typcasting kontroller.
Låt oss ta ett exempel för att förstå instans av operatör:
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); } }
Produktion:
Statisk vs. Icke-statiska metoder
Vi kan inte anropa en icke-statisk metod på en referensvariabel med ett nollvärde. Om vi kallar det kommer det att kasta NullPointerException, men vi kan anropa den statiska metoden med referensvariabler med nollvärden. Eftersom statiska metoder är bundna med statisk bindning, kommer de inte att kasta nollpekare undantag.
Låt oss ta ett exempel för att förstå faktumet med 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(); } }
Produktion:
== och != Operatörer
I Java är dessa två operatorer tillåtna med null. Båda operatorerna är användbara för att kontrollera null med objekt i Java.
Låt oss ta ett exempel för att förstå hur dessa två operatörer fungerar med 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'); } } }
Produktion:
Varje Java-utvecklare bör ha kunskap om alla ovan diskuterade fakta om null.