Fapte interesante despre null în Java

Aproape toate limbajele de programare sunt legate cu null. Nu există aproape un programator care să nu fie tulburat de null. În Java null este asociat java.lang. NullPointerException . Deoarece este o clasă în pachetul java.lang, se numește atunci când încercăm să facem unele operații cu sau fără null și uneori nici măcar nu știm unde s-a întâmplat. Mai jos sunt câteva puncte importante despre null în java pe care fiecare programator Java ar trebui să le cunoască: 

  • În Java, nulul este o valoare specială care reprezintă absența unei valori sau a unei referințe. Este folosit pentru a indica faptul că o variabilă sau un obiect nu are în prezent o valoare atribuită.
  • Valoarea nulă nu este aceeași cu un șir gol sau cu o matrice goală. Un șir gol este un șir care nu conține caractere, în timp ce o matrice goală este o matrice care nu conține elemente.
  • Limbajul de programare Java are un tip nul încorporat numit „null”, care este un subtip al tuturor tipurilor de referință. Cu toate acestea, nu poate fi folosit ca tip pentru o variabilă deoarece nu are nicio instanță și nu poate fi instanțiată.
  • Este considerată cea mai bună practică să verificați valorile nule înainte de a efectua orice operațiuni asupra acestora pentru a evita riscul unei excepții NullPointerException (NPE). NPE este considerată una dintre cele mai comune excepții în Java și poate provoca comportament neașteptat sau blocări într-un program.
  • În Java, null este, de asemenea, folosit pentru a indica faptul că o metodă nu returnează nicio valoare. Acesta este cunoscut ca tip de returnare „nulat”. O metodă void nu returnează nicio valoare și este utilizată de obicei pentru a efectua o acțiune, cum ar fi imprimarea pe consolă sau actualizarea unei baze de date.
  • În plus, null poate fi folosit ca valoare implicită pentru parametrii opționali dintr-o metodă. Acest lucru permite apelarea unei metode fără a specifica o valoare pentru acel parametru, iar valoarea nulă va fi folosită în schimb.
  • Nu este recomandat să utilizați null ca valoare pentru o variabilă sau un obiect care este destinat să dețină o valoare a unui tip de date primitiv, cum ar fi int sau double, deoarece va provoca o eroare la timp de compilare.
  • Utilizarea lui null în Java poate fi o sursă de confuzie și erori subtile, așa că este important să fiți conștienți de comportamentul său și de cum să îl gestionați corect în codul dvs. pentru a preveni erorile.

1. null este sensibil la majuscule și minuscule: null este literal în Java și pentru că cuvintele cheie sunt caz sensibil în java nu putem scrie NULL sau 0 ca în limbajul 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  ;         }   }   

Ieșire:

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

2. Valoarea variabilei de referință: Orice variabilă de referință din Java are o valoare implicită nul

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

Ieșire:

 Value of object obj is : null   

3. Tip de nul: Spre deosebire de concepția greșită comună, null nu este obiect sau nici un tip. Este doar o valoare specială care poate fi atribuită oricărui tip de referință și puteți tasta cast null oricărui tip. Exemple:

  // 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. Autoboxing și unboxing: În timpul operațiunilor de auto-boxing și unboxing, compilatorul pur și simplu aruncă o eroare de excepție Nullpointer dacă o valoare nulă este atribuită tipului de date cu casete primitive. 

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

Ieșire:

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

5. instanță de operator: Operatorul java instanceof este folosit pentru a testa dacă obiectul este o instanță de tipul specificat (clasă sau subclasă sau interfață). În timpul executării, rezultatul operatorului instanceof este adevărat dacă valoarea expresiei nu este nulă. Aceasta este o proprietate importantă a instanței de funcționare, care o face utilă pentru verificările de turnare a tipului. 

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

Ieșire:

 false    
true

6. Metode statice vs non-statice: Nu putem apela o metodă non-statică pe o variabilă de referință cu valoare nulă, aceasta va arunca NullPointerException, dar putem apela metoda statică cu variabile de referință cu valori nule. Deoarece metodele statice sunt legate folosind legarea statică, ele nu vor arunca excepția indicatorului nul. 

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

Ieșire:

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

7. == și != Comparația și nu egală cu operatori sunt permise cu nul în Java. Acest lucru poate fi util în verificarea nullului cu obiecte în java. 

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

Ieșire:

 true   
false

8 . „null” poate fi transmis ca argument în metoda:

Putem trece nulul ca argument în java și putem imprima același lucru. Tipul de date al argumentului ar trebui să fie Reference Type. Dar metoda de returnare poate fi orice tip ca void int double sau orice alt tip de referință, în funcție de logica programului.

Aici metoda „print_null” va tipări pur și simplu argumentul care este transmis de la metoda principală.

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

Ieșire:

Hei, sunt: ​​nul

9. Operatorul „+” pe null:

Putem concatena valoarea nulă cu variabile String în java. Este considerată o concatenare în java.

Aici nulul va fi concatenat doar cu variabila String. Dacă folosim operatorul „+” cu nul și orice alt tip (Integer Double etc.) altul decât String, va arunca un mesaj de eroare. 

Întregul a=null+7 va arunca un mesaj de eroare ca „ tipuri de operanzi greșite pentru operatorul binar „+”

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

Ieșire
Concatenated value : null_value