Цікаві факти про null в Java

Майже всі мови програмування пов'язані з null. Навряд чи знайдеться програміст, якого б не турбував null. У Java null асоціюється з java.lang. NullPointerException . Оскільки це клас у пакеті java.lang, він викликається, коли ми намагаємося виконати деякі операції з null або без нього, і іноді ми навіть не знаємо, де це сталося. Нижче наведено кілька важливих моментів про null у java, які повинен знати кожен Java-програміст: 

  • У Java null — це спеціальне значення, яке означає відсутність значення або посилання. Він використовується, щоб вказати, що змінна або об’єкт наразі не має присвоєного значення.
  • Нульове значення не те саме, що порожній рядок або порожній масив. Порожній рядок - це рядок, який не містить символів, тоді як порожній масив - це масив, який не містить елементів.
  • Мова програмування Java має вбудований нульовий тип під назвою «null», який є підтипом усіх посилальних типів. Однак його не можна використовувати як тип для змінної, оскільки він не має жодного екземпляра та не може бути створений.
  • Вважається найкращою практикою перевіряти нульові значення перед виконанням над ними будь-яких операцій, щоб уникнути ризику NullPointerException (NPE). NPE вважається одним із найпоширеніших винятків у Java та може спричинити неочікувану поведінку або збої в програмі.
  • У Java null також використовується для позначення того, що метод не повертає жодного значення. Це відоме як "пустий" тип повернення. Метод void не повертає жодного значення і зазвичай використовується для виконання таких дій, як друк на консолі або оновлення бази даних.
  • Крім того, null можна використовувати як значення за замовчуванням для додаткових параметрів у методі. Це дозволяє викликати метод без вказівки значення для цього параметра, а замість нього буде використано нульове значення.
  • Не рекомендується використовувати null як значення для змінної або об’єкта, призначеного для зберігання значення примітивного типу даних, наприклад int або double, оскільки це спричинить помилку під час компіляції.
  • Використання null у Java може бути джерелом плутанини та непомітних помилок, тому важливо знати про його поведінку та про те, як правильно його обробляти у своєму коді, щоб запобігти помилкам.

1. null чутливий до регістру: null є літералом у Java, тому що ключові слова є чутливий до регістру у java ми не можемо написати NULL або 0, як у мові 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  ;         }   }   

Вихід:

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

2. Значення еталонної змінної: Будь-яка посилальна змінна в Java має значення за замовчуванням нульовий

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

Вихід:

 Value of object obj is : null   

3. Тип нуля: На відміну від поширеної помилки, null не є об’єктом або типом. Це просто спеціальне значення, яке можна призначити будь-якому посилальному типу, і ви можете ввести cast null для будь-якого типу. Приклади:

  // 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. Автоматичне упаковування та розпакування: Під час операцій автоматичного упаковування та розпакування компілятор просто видає помилку винятку Nullpointer, якщо нульове значення призначається примітивному типу даних у коробці. 

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

Вихід:

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

5. екземпляр оператора: Оператор Java instanceof використовується для перевірки того, чи є об’єкт екземпляром зазначеного типу (класу, підкласу чи інтерфейсу). Під час виконання результат оператора instanceof є істинним, якщо значення виразу не є нульовим. Це важлива властивість операції instanceof, яка робить її корисною для перевірки приведення типу. 

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

Вихід:

 false    
true

6. Статичні та нестатичні методи: Ми не можемо викликати нестатичний метод для посилальної змінної з нульовим значенням, він викличе NullPointerException, але ми можемо викликати статичний метод із посилальними змінними з нульовими значеннями. Оскільки статичні методи об’єднані за допомогою статичного зв’язування, вони не створюватимуть виняток Null pointer. 

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

Вихід:

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

7. == і != Оператори порівняння та не дорівнюють дозволені з null у Java. Це може бути корисним для перевірки null з об’єктами в 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  );      }   }   

Вихід:

 true   
false

8 . 'null' можна передати як аргумент у методі:

Ми можемо передати null як аргумент у java, і ми можемо надрукувати те саме. Тип даних аргументу має бути Reference Type. Але тип повернення методу може бути будь-яким типом, наприклад void int double, або будь-яким іншим типом посилання залежно від логіки програми.

Тут метод 'print_null' просто виведе аргумент, який передається з основного методу.

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

Вихід:

Привіт, я: нуль

9. Оператор '+' на null:

Ми можемо об’єднати нульове значення зі змінними String у java. Це вважається конкатенацією в java.

Тут нуль буде об’єднаний лише зі змінною String. Якщо ми використовуємо оператор «+» з null і будь-яким іншим типом (Integer Double тощо), окрім String, це видасть повідомлення про помилку. 

Ціле число a=null+7 викличе повідомлення про помилку як ' неправильні типи операндів для двійкового оператора '+' '

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

Вихід
Concatenated value : null_value