Майже всі мови програмування пов'язані з 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 має значення за замовчуванням нульовий .
Javapublic 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, якщо нульове значення призначається примітивному типу даних у коробці.
Javapublic 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, яка робить її корисною для перевірки приведення типу.
Javapublic 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.
Javapublic 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.
Javapublic 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' просто виведе аргумент, який передається з основного методу.
Javaimport 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 викличе повідомлення про помилку як ' неправильні типи операндів для двійкового оператора '+' '
Javaimport 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