Interesujące fakty na temat wartości null w Javie

Prawie wszystkie języki programowania są powiązane z wartością null. Prawie nie ma programisty, któremu nie przeszkadzałaby wartość null. W Javie null jest powiązany z Java.lang. Wyjątek NullPointer . Ponieważ jest to klasa w pakiecie java.lang, wywoływana jest, gdy próbujemy wykonać jakąś operację z wartością null lub bez niej i czasami nawet nie wiemy, gdzie to się stało. Poniżej znajduje się kilka ważnych punktów na temat wartości null w Javie, które każdy programista Java powinien wiedzieć: 

  • W Javie null to specjalna wartość reprezentująca brak wartości lub odniesienia. Służy do wskazania, że ​​zmienna lub obiekt nie ma aktualnie przypisanej wartości.
  • Wartość null to nie to samo, co pusty ciąg znaków lub pusta tablica. Pusty ciąg to ciąg niezawierający znaków, natomiast pusta tablica to tablica niezawierająca żadnych elementów.
  • Język programowania Java ma wbudowany typ zerowy zwany „null”, który jest podtypem wszystkich typów referencyjnych. Nie można go jednak użyć jako typu zmiennej, ponieważ nie ma ona żadnej instancji i nie można jej utworzyć.
  • Za najlepszą praktykę uważa się sprawdzanie wartości null przed wykonaniem na nich jakichkolwiek operacji, aby uniknąć ryzyka wystąpienia wyjątku NullPointerException (NPE). NPE jest uważany za jeden z najczęstszych wyjątków w Javie i może powodować nieoczekiwane zachowanie lub awarie programu.
  • W Javie wartość null jest również używana do wskazania, że ​​metoda nie zwraca żadnej wartości. Nazywa się to typem zwrotu „void”. Metoda void nie zwraca żadnej wartości i jest zwykle używana do wykonywania akcji, takiej jak drukowanie na konsoli lub aktualizacja bazy danych.
  • Ponadto wartość null może zostać użyta jako wartość domyślna dla parametrów opcjonalnych w metodzie. Umożliwia to wywołanie metody bez określania wartości tego parametru i zamiast tego zostanie użyta wartość null.
  • Nie zaleca się używania wartości null jako wartości zmiennej lub obiektu, który ma przechowywać wartość pierwotnego typu danych, takiego jak int lub double, ponieważ spowoduje to błąd w czasie kompilacji.
  • Użycie wartości null w Javie może być źródłem zamieszania i subtelnych błędów, dlatego ważne jest, aby zdawać sobie sprawę z jej zachowania i wiedzieć, jak prawidłowo obchodzić się z nią w kodzie, aby zapobiec błędom.

1. null uwzględnia wielkość liter: null jest dosłowne w Javie i ponieważ słowa kluczowe są wielkość liter ma znaczenie w Javie nie możemy zapisać NULL ani 0, jak w języku 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  ;         }   }   

Wyjście:

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

2. Wartość zmiennej referencyjnej: Każda zmienna referencyjna w Javie ma wartość domyślną nieważny

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

Wyjście:

 Value of object obj is : null   

3. Typ wartości null: W przeciwieństwie do powszechnego błędnego przekonania, wartość null nie jest obiektem ani typem. To po prostu specjalna wartość, którą można przypisać do dowolnego typu referencyjnego i możesz wpisać rzutowanie null na dowolny typ. Przykłady:

  // 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. Automatyczne pakowanie i rozpakowywanie: Podczas operacji automatycznego pakowania i rozpakowywania kompilator po prostu zgłasza błąd wyjątku Nullpointer, jeśli wartość null jest przypisana do pierwotnego typu danych w pudełku. 

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

Wyjście:

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

5. instancja operatora: Operator java instancjiof służy do sprawdzania, czy obiekt jest instancją określonego typu (klasa, podklasa lub interfejs). W czasie wykonywania wynik operatora instancjiof ma wartość true, jeśli wartość wyrażenia nie jest równa null. Jest to ważna właściwość instancji operacji, która czyni ją przydatną do sprawdzania rzutowania typów. 

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

Wyjście:

 false    
true

6. Metody statyczne i niestatyczne: Nie możemy wywołać metody niestatycznej na zmiennej referencyjnej o wartości null, spowoduje to zgłoszenie wyjątku NullPointerException, ale możemy wywołać metodę statyczną ze zmiennymi referencyjnymi o wartości null. Ponieważ metody statyczne są powiązane przy użyciu wiązania statycznego, nie będą zgłaszać wyjątku wskaźnika zerowego. 

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

Wyjście:

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

7. == i != Operatory porównania i nierówne są dozwolone w przypadku wartości null w Javie. Może to być przydatne przy sprawdzaniu wartości null za pomocą obiektów w Javie. 

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

Wyjście:

 true   
false

8 . Wartość „null” można przekazać jako argument w metodzie:

Możemy przekazać wartość null jako argument w Javie i możemy wydrukować to samo. Typ danych argumentu powinien być typem odniesienia. Jednak zwracanym typem metody może być dowolny typ, taki jak void int double lub dowolny inny typ referencyjny, w zależności od logiki programu.

Tutaj metoda 'print_null' po prostu wydrukuje argument przekazany z metody głównej.

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

Wyjście :

Hej, jestem: null

9. Operator „+” na null:

Możemy połączyć wartość null ze zmiennymi typu String w Javie. W Javie jest to uważane za konkatenację.

Tutaj wartość null zostanie połączona tylko ze zmienną String. Jeśli użyjemy operatora „+” z wartością null i dowolnym innym typem (Integer Double itp.) innym niż String, wyświetli się komunikat o błędzie. 

złe typy operandów dla operatora binarnego „+” „

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

Wyjście
Concatenated value : null_value