Почти всички езици за програмиране са свързани с 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'. Методът 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 не е Object или нито тип. Това е просто специална стойност, която може да бъде присвоена на всеки референтен тип и можете да въведете 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, но можем да извикаме статичен метод с референтни променливи с нулеви стойности. Тъй като статичните методи са свързани чрез статично свързване, те няма да хвърлят изключение за нулев указател.
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' може да бъде подаден като аргумент в метода:
Можем да предадем нулата като аргумент в 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