Всеки език за програмиране, включително Java, е ограничен с null. Няма програмист, който да не е срещал проблем в кода, свързан с null. Програмистите се сблъскват главно NullPointerException когато се опитват да извършат някои операции с нулеви данни. NullPointerException е наличен клас, който принадлежи към пакета java.lang.
Преди да разберете фактите за null, е необходимо да имате познания за променливите на Java. Ако не знаете какво Java променлива е, преминете през следната връзка:
Всеки разработчик трябва да знае за следните факти за null в Java:
Различаващ главни от малки букви
В Java не можем да напишем null като NULL или 0, както при програмирането на C, тъй като null е литерал и ключовите думи са чувствителни към малки и големи букви в Java.
Нека вземем пример, за да разберем чувствителното към малки и малки букви поведение на null.
NullExample1.java
// import classes and packages if any public class NullExample1 { // main() method start public static void main (String[] args) throws java.lang.Exception { // declare and initialize an object with NULL Object obj1 = NULL; // declare and initialize an object with null Object obj2 = null; // print both objects System.out.println('The value of obj1 is: '+obj1); System.out.println('The value of obj2 is: '+obj2); } }
Изход:
как да надстроите java
Стойност на референтна променлива
По подразбиране всяка референтна променлива има нулева стойност в Java. Референтна променлива се използва за указване и съхраняване на обекти/стойности от референтен тип в Java. Класове, масиви, изброявания и интерфейси и т.н. са някои референтни типове в Java.
И така, референтен тип съхранява нулева стойност, ако към референтен тип не е предаден обект.
двойно в java
Нека вземем пример, за да разберем как работи референтна променлива за нулева стойност:
NullExample2.java
// import classes and packages if any public class NullExample2 { // declare two objects private static Object obj1; private static Object obj2; // main() method start public static void main (String[] args) { // print both objects System.out.println('The value of obj1 is: '+obj1); System.out.println('The value of obj2 is: '+obj2); } }
Изход:
Нулев тип
В Java null не е нито обект, нито тип. Това е специална стойност, която можем да присвоим на всяка променлива от референтен тип. Можем да преобразуваме null във всеки тип, в който пожелаем, като например string, int, double и т.н.
Нека вземем пример, за да разберем как можем да присвоим нулеви стойности на който и да е референтен тип.
NullExample3.java
// import classes and packages if any public class NullExample3 { // main() method start public static void main (String[] args) { // pass a null value to a different type of variable // pass null to String String str = null; // pass null to Integer Integer itr = null; // pass null to Double Double dbl = null; // casting null to String String castedStr = (String)null; // casting null to Integer Integer castedItr = (Integer)null; // casting null to Double Double castedDbl = (Double)null; // print all reference type System.out.println('The value of str is: '+str); System.out.println('The value of itr is: '+itr); System.out.println('The value of dbl is: '+dbl); System.out.println('The value of castedStr is: '+castedStr); System.out.println('The value of castedItr is: '+castedItr); System.out.println('The value of castedDbl is: '+castedDbl); } }
Изход:
Autoboxing и Unboxing
Автобокс и Разопаковане са двете най-важни операции, които извършваме в Java. Компилаторът хвърля NullPointerException когато присвояваме нулева стойност на всеки примитивен тип данни в кутия, докато изпълняваме операциите.
Нека вземем пример, за да разберем автобоксирането и факта за разопаковане на null.
NullExample4.java
// import classes and packages if any public class NullExample4 { // main() method start public static void main (String[] args) throws java.lang.Exception { // pass null value to a reference type Integer itr = null; // perform unboxing operation int data = itr; // print both objects System.out.println('The value of itr is: '+itr); System.out.println('The value of data is: '+data); } }
Изход:
arraylist в java сортиране
Екземплярът на Operator
За да проверите дали ан обект е екземпляр от посочения тип или не, използваме instanceof оператор. The instanceof операторът връща true, когато стойността на израза не е нула по време на изпълнение. Играе важна роля при проверките за типове.
Нека вземем пример, за да разберем instanceof оператор:
NullExample5.java
// import classes and packages if any public class { // main() method start public static void main (String[] args) throws java.lang.Exception { // pass null value to a reference type Integer m = null; // pass a value to a reference type Integer n = 20; // print instanceof values System.out.println(m instanceof Integer); System.out.println(n instanceof Integer); } }
Изход:
Статично Vs. Нестатични методи
Не можем да извикаме нестатичен метод на референтна променлива с нулева стойност. Ако го извикаме, той ще хвърли NullPointerException, но можем да извикаме статичния метод с референтни променливи с нулеви стойности. Тъй като статичните методи са свързани чрез статично обвързване, те няма да хвърлят изключение за нулев указател.
Нека вземем пример, за да разберем факта на нула:
NullExample6.java
също модел
// import classes and packages if any public class NullExample6 { // define static method public static void staticMethod() { //it can be called by using a null reference System.out.println('static method can be called by null reference.'); } // define non static method public void nonStaticMethod() { //it cannot be called by using a null reference System.out.println('static method cannot be called by a null reference.'); } // main() method start public static void main (String[] args) throws java.lang.Exception { NullExample6 exp = null; exp.staticMethod(); exp.nonStaticMethod(); } }
Изход:
== и != Оператори
В Java тези два оператора са разрешени с null. И двата оператора са полезни при проверка на null с обекти в Java.
Нека вземем пример, за да разберем как тези два оператора работят с null.
NullExample7.java
// import classes and packages if any public class NullExample7 { // main() method start public static void main (String[] args) { // pass null value to String type of variables // pass null to str1 String str1 = null; // pass null to str2 String str2 = null; // pass null to str3 String str3 = 'Test'; // compare strings if(str1 == str2){ System.out.println('str1 and str2 both are equal'); }else{ System.out.println('str1 and str2 are not equal'); } if(str2 == str3){ System.out.println('str2 and str3 both are equal'); }else{ System.out.println('str2 and str3 are not equal'); } if(str3 == str1){ System.out.println('str3 and str1 both are equal'); }else{ System.out.println('str3 and str1 are not equal'); } } }
Изход:
Всеки разработчик на Java трябва да има познания за всички обсъдени по-горе факти за null.