Цікаві факти про 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 error2. Значення еталонної змінної: Будь-яка посилальна змінна в Java має значення за замовчуванням нульовий .
Javapublic 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 : null3. Тип нуля: На відміну від поширеної помилки, 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
true6. Статичні та нестатичні методи: Ми не можемо викликати нестатичний метод для посилальної змінної з нульовим значенням, він викличе 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 ( & 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.
Javapublic class Test { public static void main ( String args [] ) { // return true; System . out . println ( null == null ); // return false; System . out . println ( null != null ); } }Вихід:
true
false8 . '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