logo

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

Майже всі мови програмування пов'язані з null. Навряд чи знайдеться програміст, якого б не турбував null. У Java null асоціюється з java.lang. NullPointerException . Оскільки це клас у пакеті java.lang, він викликається, коли ми намагаємося виконати деякі операції з null або без нього, і іноді ми навіть не знаємо, де це сталося. Нижче наведено кілька важливих моментів про null у java, які повинен знати кожен 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("Value of object obj is : " + 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(  " static method  can be called by null reference & quot;);  }  private void nonStaticMethod()  {  // Can not be called by null reference  System.out.print("  Non - static method - ");  System.out.println(  "  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