Zanimiva dejstva o null v Javi

Skoraj vsi programski jeziki so povezani z null. Skorajda ni programerja, ki ga null ne bi mučil. V Javi je null povezan z java.lang. NullPointerException . Ker je razred v paketu java.lang, se pokliče, ko poskušamo izvesti nekatere operacije z ali brez null in včasih sploh ne vemo, kje se je to zgodilo. Spodaj je nekaj pomembnih točk o null v Javi, ki bi jih moral poznati vsak programer Jave: 

  • V Javi je null posebna vrednost, ki predstavlja odsotnost vrednosti ali reference. Uporablja se za označevanje, da spremenljivka ali predmet trenutno nima dodeljene vrednosti.
  • Ničelna vrednost ni enaka praznemu nizu ali praznemu polju. Prazen niz je niz, ki ne vsebuje znakov, medtem ko je prazen niz niz, ki ne vsebuje elementov.
  • Programski jezik Java ima vgrajen ničelni tip, imenovan 'null', ki je podtip vseh referenčnih tipov. Vendar ga ni mogoče uporabiti kot tip za spremenljivko, ker nima nobenega primerka in ga ni mogoče instancirati.
  • Najboljša praksa je, da preverite ničelne vrednosti, preden na njih izvedete kakršne koli operacije, da se izognete tveganju NullPointerException (NPE). NPE velja za eno najpogostejših izjem v Javi in ​​lahko povzroči nepričakovano vedenje ali zrušitve programa.
  • V Javi se null uporablja tudi za označevanje, da metoda ne vrne nobene vrednosti. To je znano kot vrnjena vrsta 'niz'. Metoda void ne vrne nobene vrednosti in se običajno uporablja za izvajanje dejanj, kot je tiskanje na konzolo ali posodabljanje baze podatkov.
  • Poleg tega lahko null uporabite kot privzeto vrednost za neobvezne parametre v metodi. To omogoča klic metode brez podajanja vrednosti za ta parameter in namesto tega bo uporabljena ničelna vrednost.
  • Ni priporočljivo uporabljati null kot vrednost za spremenljivko ali predmet, ki naj bi hranil vrednost primitivnega podatkovnega tipa, kot je int ali double, ker bo povzročil napako med prevajanjem.
  • Uporaba null v Javi je lahko vir zmede in subtilnih napak, zato je pomembno, da se zavedate njenega vedenja in kako z njo pravilno ravnati v kodi, da preprečite napake.

1. null je občutljiv na velike in male črke: null je v Javi dobeseden in ker so ključne besede razlikuje med velikimi in malimi črkami v javi ne moremo napisati NULL ali 0 kot v jeziku C. 

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  ;         }   }   

Izhod:

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

2. Vrednost referenčne spremenljivke: Vsaka referenčna spremenljivka v Javi ima privzeto vrednost null

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  );      }      }   

Izhod:

 Value of object obj is : null   

3. Vrsta ničelne vrednosti: V nasprotju s pogostim napačnim prepričanjem null ni predmet ali noben tip. To je le posebna vrednost, ki jo je mogoče dodeliti kateremu koli referenčnemu tipu in kateremu koli tipu lahko vnesete cast null Primeri:

  // 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. Samodejno pakiranje in razpakiranje: Med operacijami samodejnega pakiranja in razpakiranja prevajalnik preprosto vrže napako izjeme Nullpointer, če je primitivnemu podatkovnemu tipu v okvirju dodeljena ničelna vrednost. 

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  ;      }   }   

Izhod:

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

5. primerek operaterja: Operator java instanceof se uporablja za preverjanje, ali je predmet primerek navedene vrste (razred ali podrazred ali vmesnik). V času izvajanja je rezultat operatorja instanceof resničen, če vrednost izraza ni ničelna. To je pomembna lastnost operacije instanceof, zaradi katere je uporabna za preverjanje ulitja tipa. 

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  );      }   }   

Izhod:

 false    
true

6. Statične proti nestatičnim metodam: Ne moremo klicati nestatične metode za referenčno spremenljivko z ničelno vrednostjo, vrgla bo NullPointerException, lahko pa kličemo statično metodo z referenčnimi spremenljivkami z ničelnimi vrednostmi. Ker so statične metode povezane s statično vezavo, ne bodo vrgle izjeme ničelnega kazalca. 

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  ;);      }   }   

Izhod:

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

7. == in != Operatorja primerjava in ni enako sta v Javi dovoljena z vrednostjo null. To je lahko uporabno pri preverjanju vrednosti null s predmeti v Javi. 

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

Izhod:

 true   
false

8 . 'null' se lahko posreduje kot argument v metodi:

Ničelo lahko posredujemo kot argument v Javi in ​​lahko natisnemo isto. Podatkovni tip argumenta mora biti Referenčni tip. Toda povratni tip metode je lahko kateri koli tip, kot je void int double ali kateri koli drug referenčni tip, odvisno od logike programa.

Tukaj bo metoda 'print_null' preprosto natisnila argument, ki je bil posredovan iz glavne metode.

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  );      }   }   

Izhod:

Hej jaz sem: nič

9. Operator '+' na null:

Ničelno vrednost lahko združimo s spremenljivkami String v Javi. V Javi velja za veriženje.

Tukaj bo ničelna vrednost povezana le s spremenljivko String. Če uporabimo operator '+' z ničlo in katero koli drugo vrsto (Integer Double itd.), ki ni niz, bo vrglo sporočilo o napaki. 

Integer a=null+7 bo vrglo sporočilo o napaki kot ' slabe vrste operandov za binarni operator '+' '

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  );      }   }   

Izhod
Concatenated value : null_value