Įdomūs faktai apie null Java

Beveik visos programavimo kalbos yra susietos su nuliu. Vargu ar yra programuotojas, kurio nevargintų nulis. Java null yra susietas java.lang. NullPointerException . Kadangi tai yra java.lang paketo klasė, ji vadinama, kai bandome atlikti kai kurias operacijas su nuliu arba be jos, o kartais net nežinome, kur tai atsitiko. Žemiau yra keletas svarbių dalykų, susijusių su java null, kuriuos turėtų žinoti kiekvienas Java programuotojas: 

  • Java „null“ yra speciali reikšmė, nurodanti vertės ar nuorodos nebuvimą. Jis naudojamas norint nurodyti, kad kintamasis ar objektas šiuo metu neturi jam priskirtos reikšmės.
  • Nulinė reikšmė nėra tokia pati kaip tuščia eilutė arba tuščias masyvas. Tuščia eilutė yra eilutė, kurioje nėra simbolių, o tuščias masyvas yra masyvas, kuriame nėra jokių elementų.
  • Java programavimo kalba turi įmontuotą nulinį tipą, vadinamą „null“, kuris yra visų nuorodų tipų potipis. Tačiau jis negali būti naudojamas kaip kintamojo tipas, nes jis neturi egzempliorių ir negali būti kartojamas.
  • Manoma, kad geriausia praktika patikrinti nulines vertes prieš atliekant bet kokias operacijas, kad būtų išvengta NullPointerException (NPE) rizikos. NPE yra laikoma viena iš dažniausiai pasitaikančių „Java“ išimčių ir gali sukelti netikėtą programos elgesį arba gedimus.
  • Java „null“ taip pat naudojamas norint nurodyti, kad metodas negrąžina jokios reikšmės. Tai žinoma kaip „tuščiojo“ grąžinimo tipas. Tuščiųjų metodas negrąžina jokios reikšmės ir paprastai naudojamas atliekant veiksmą, pvz., spausdinant į konsolę arba atnaujinant duomenų bazę.
  • Be to, nulis gali būti naudojamas kaip numatytoji pasirenkamų metodo parametrų reikšmė. Tai leidžia iškviesti metodą nenurodant to parametro reikšmės, o vietoj to bus naudojama nulinė reikšmė.
  • Nerekomenduojama naudoti null kaip vertės kintamajam arba objektui, kuriam skirta primityvaus duomenų tipo reikšmė, pvz., int arba double, nes tai sukels kompiliavimo laiko klaidą.
  • Nul naudojimas Java gali sukelti painiavą ir subtilių klaidų, todėl svarbu žinoti, kaip jis elgiasi ir kaip tinkamai ją tvarkyti savo kode, kad išvengtumėte klaidų.

1. Nulis yra didžiosios ir mažosios raidės: null yra pažodinis Java ir todėl, kad raktiniai žodžiai yra didžiosios ir mažosios raidės Java negalime rašyti NULL arba 0 kaip C kalba. 

Java
   public     class   Test   {      public     static     void     main     (  String  []     args  )     throws     java  .  lang  .  Exception      {      // compile-time error : can't find symbol 'NULL'      Object     obj     =     NULL  ;             //runs successfully      Object     obj1     =     null  ;         }   }   

Išvestis:

 5: error: cannot find symbol   
can't find symbol 'NULL'
^
variable NULL
class Test
1 error

2. Nuorodos kintamojo reikšmė: Bet kuris „Java“ nuorodos kintamasis turi numatytąją reikšmę nulinis

Java
   public     class   Test   {      private     static     Object     obj  ;         public     static     void     main  (  String     args  []  )      {      // it will print null;      System  .  out  .  println  (  &  quot  ;  Value     of     object     obj     is     :     &  quot  ;     +     obj  );      }      }   

Išvestis:

 Value of object obj is : null   

3. Nulinės vertės tipas: Skirtingai nuo paplitusio klaidingo supratimo, nulis nėra objektas ar tipas. Tai tik speciali reikšmė, kurią galima priskirti bet kokiam nuorodos tipui, o bet kokiam tipui galite įvesti cast null Pavyzdžiai:

  // null can be assigned to String   
String str = null;

// you can assign null to Integer also
Integer itr = null;

// null can also be assigned to Double
Double dbl = null;

// null can be type cast to String
String myStr = (String) null;

// it can also be type casted to Integer
Integer myItr = (Integer) null;

// yes it's possible no error
Double myDbl = (Double) null;

4. Automatinis ir išpakavimas: Atliekant automatinio įpakavimo ir išpakavimo operacijas, kompiliatorius tiesiog išmeta Nullpointer išimties klaidą, jei primityviam dėžutės duomenų tipui priskiriama nulinė reikšmė. 

Java
   public     class   Test     {      public     static     void     main  (  String  []     args  )      throws     java  .  lang  .  Exception      {      // An integer can be null so this is fine      Integer     i     =     null  ;      // Unboxing null to integer throws      // NullpointerException      int     a     =     i  ;      }   }   

Išvestis:

  Exception in thread 'main' java.lang.NullPointerException   
at Test.main(Test.java:6)

5. Operatoriaus pavyzdys: Java instanceof operatorius naudojamas patikrinti, ar objektas yra nurodyto tipo egzempliorius (klasė, poklasis arba sąsaja). Vykdymo metu operatoriaus instanceof rezultatas yra teisingas, jei išraiškos reikšmė nėra nulinė. Tai yra svarbi operacijos egzemplioriaus savybė, todėl ji naudinga tikrinant tipo liejimą. 

Java
   public     class   Test     {      public     static     void     main  (  String  []     args  )      throws     java  .  lang  .  Exception      {      Integer     i     =     null  ;      Integer     j     =     10  ;      // prints false      System  .  out  .  println  (  i     instanceof     Integer  );      // Compiles successfully      System  .  out  .  println  (  j     instanceof     Integer  );      }   }   

Išvestis:

 false    
true

6. Statiniai ir nestatiniai metodai: Negalime iškviesti nestatinio metodo, naudojant atskaitos kintamąjį, kurio reikšme yra nul. Jis išmes NullPointerException, bet galime iškviesti statinį metodą su atskaitos kintamaisiais su nulinėmis reikšmėmis. Kadangi statiniai metodai yra surišti naudojant statinį susiejimą, jie neišmes nulinės žymeklio išimties. 

Java
   public     class   Test     {      public     static     void     main  (  String     args  []  )      {      Test     obj     =     null  ;      obj  .  staticMethod  ();      obj  .  nonStaticMethod  ();      }      private     static     void     staticMethod  ()      {      // Can be called by null reference      System  .  out  .  println  (      &  quot  ;     static     method        can     be     called     by     null     reference     &     quot  ;);      }      private     void     nonStaticMethod  ()      {      // Can not be called by null reference      System  .  out  .  print  (  &  quot  ;      Non     -     static     method     -     &  quot  ;);      System  .  out  .  println  (      &  quot  ;      cannot     be     called     by     null     reference     &     quot  ;);      }   }   

Išvestis:

 static method can be called by null referenceException in thread 'main'    
java.lang.NullPointerException
at Test.main(Test.java:5)

7. == ir != Palyginimas ir nelygus operatoriams leidžiamas su null Java. Tai gali būti naudinga tikrinant nulį su java objektais. 

Java
   public     class   Test     {      public     static     void     main  (  String     args  []  )      {      // return true;      System  .  out  .  println  (  null     ==     null  );      // return false;      System  .  out  .  println  (  null     !=     null  );      }   }   

Išvestis:

 true   
false

8 . 'null' gali būti perduodamas kaip metodo argumentas:

Mes galime perduoti nulį kaip argumentą Java ir galime atspausdinti tą patį. Argumento duomenų tipas turi būti nuorodos tipas. Tačiau metodo grąžinimo tipas gali būti bet koks, kaip void int double, arba bet koks kitas nuorodos tipas, priklausomai nuo programos logikos.

Čia metodas "print_null" tiesiog išspausdins argumentą, kuris perduodamas iš pagrindinio metodo.

Java
   import     java.io.*  ;   class   GFG     {      public     static     void     print_null  (  String     str  )      {      System  .  out  .  println  (  'Hey I am : '     +     str  );      }      public     static     void     main  (  String  []     args  )      {      GFG  .  print_null  (  null  );      }   }   

Išvestis:

Sveiki, aš esu: nulis

9. „+“ operatorius null :

Nulinę reikšmę galime sujungti su String kintamaisiais Java. Tai laikoma sujungimu Java.

Čia nulis bus sujungtas tik su kintamuoju String. Jei naudosime operatorių „+“ su nuliu ir bet kokiu kitu tipu (Integer Double ir kt.), išskyrus String, bus rodomas klaidos pranešimas. 

Sveikasis skaičius a=null+7 pateiks klaidos pranešimą kaip „ blogi operandų tipai dvejetainiam operatoriui „+“

Java
   import     java.io.*  ;   class   GFG     {      public     static     void     main  (  String  []     args  )      {      String     str1     =     null  ;      String     str2     =     '_value'  ;      String     output     =     str1     +     str2  ;      System  .  out  .  println  (  'Concatenated value : '      +     output  );      }   }   

Išvestis
Concatenated value : null_value