Jokainen ohjelmointikieli, mukaan lukien Java, on rajattu nollalla. Ei ole ohjelmoijaa, joka ei kohdannut mitään ongelmaa nolla-koodissa. Ohjelmoijat kohtaavat pääasiassa NullPointerException kun he yrittävät suorittaa joitain toimintoja tyhjällä tiedolla. NullPointerException on saatavilla oleva luokka, joka kuuluu java.lang-pakettiin.
Ennen kuin ymmärrät nollan tosiasiat, sinun on tunnettava Java-muuttujat. Jos et tiedä mitä Java-muuttuja eli käy seuraavasta linkistä:
Jokaisella kehittäjällä tulee olla tietoa seuraavista Java-nolla-asioista:
tarkista java-versio linuxissa
Kirjainkoon erottelu
Javassa emme voi kirjoittaa tyhjää arvoa NULL tai 0:aa kuten C-ohjelmoinnissa, koska null on literaali ja avainsanat ovat kirjainkoolla huomioitavia Javassa.
Otetaan esimerkki ymmärtääksemme nollan isot ja pienet kirjaimet.
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); } }
Lähtö:
Viitemuuttujan arvo
Oletusarvoisesti jokaisella viitemuuttujalla on tyhjä arvo Javassa. Viitemuuttujaa käytetään osoittamaan ja tallentamaan viittaustyyppisiä objekteja/arvoja Javassa. Luokat, taulukot, luettelot ja rajapinnat jne. ovat joitain Java-viittaustyyppejä.
Joten viitetyyppi tallentaa nolla-arvon, jos mitään objektia ei välitetä viitetyyppiin.
Otetaan esimerkki ymmärtääksemme, kuinka viitemuuttuja toimii nolla-arvolle:
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); } }
Lähtö:
Nollatyyppi
Javassa null ei ole objekti eikä tyyppi. Se on erityinen arvo, jonka voimme antaa mille tahansa viitetyypin muuttujalle. Voimme heittää nollan mihin tahansa haluamaamme tyyppiin, kuten merkkijono, int, double jne.
Otetaan esimerkki ymmärtääksemme, kuinka voimme määrittää nolla-arvoja mille tahansa viitetyypille.
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); } }
Lähtö:
Autoboxing ja Unboxing
Autoboxing ja Pakkauksen avaaminen ovat kaksi tärkeintä toimintoa, jotka suoritamme Javassa. Kääntäjä heittää NullPointerException kun annamme nolla-arvon mille tahansa primitiiviselle laatikkotietotyypille toimintoja suoritettaessa.
Otetaan esimerkki ymmärtääksemme autoboxingin ja tyhjän laatikon purkamisen.
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); } }
Lähtö:
Operaattorin esimerkki
Sen tarkistamiseksi, onko an esine on määritetyn tyypin esiintymä vai ei, käytämme esiintymä operaattori. The esiintymä operaattori palauttaa tosi, kun lausekkeen arvo ei ole nolla ajon aikana. Sillä on tärkeä rooli tyyppitarkistuksissa.
array vs arraylist
Otetaan esimerkki ymmärtääksemme esiintymä operaattori:
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); } }
Lähtö:
Staattinen vs. Ei-staattiset menetelmät
Emme voi kutsua ei-staattista menetelmää referenssimuuttujalla, jonka arvo on nolla. Jos kutsumme sitä, se heittää NullPointerExceptionin, mutta voimme kutsua staattista menetelmää referenssimuuttujilla, joilla on nolla-arvot. Koska staattiset menetelmät yhdistetään käyttämällä staattista sidontaa, ne eivät anna nollaosoittimen poikkeusta.
Otetaan esimerkki nullin tosiasian ymmärtämiseksi:
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(); } }
Lähtö:
== ja != Operaattorit
Javassa nämä kaksi operaattoria ovat sallittuja tyhjällä. Molemmat operaattorit ovat hyödyllisiä tarkastettaessa nulla Java-objektien kanssa.
Otetaan esimerkki ymmärtääksemme kuinka nämä kaksi operaattoria toimivat nollan kanssa.
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'); } } }
Lähtö:
Jokaisella Java-kehittäjällä tulee olla tieto kaikista edellä käsitellyistä null-faktaista.