Svaki pojedini programski jezik, uključujući Javu, ograničen je s null. Ne postoji programer koji se nije suočio s problemom u kodu koji se odnosi na null. Programeri se uglavnom suočavaju NullPointerException kada pokušaju izvesti neke operacije s nultim podacima. NullPointerException je dostupna klasa koja pripada paketu java.lang.
Prije razumijevanja činjenica null-a, potrebno je poznavati Java varijable. Ako ne znate što Java varijabla je, idite kroz sljedeću vezu:
Svaki programer trebao bi znati o sljedećim činjenicama null-a u Javi:
Osjetljivo na velika i mala slova
U Javi ne možemo napisati null kao NULL ili 0 kao u C programiranju jer je null literal, a ključne riječi u Javi razlikuju velika i mala slova.
Uzmimo primjer da bismo razumjeli ponašanje null koje razlikuje velika i mala slova.
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); } }
Izlaz:
Vrijednost referentne varijable
Prema zadanim postavkama, svaka referentna varijabla ima nultu vrijednost u Javi. Referentna varijabla se koristi za označavanje i pohranjivanje objekata/vrijednosti referentnog tipa u Javi. Klase, nizovi, enumeracije i sučelja, itd., neki su referentni tipovi u Javi.
binarni u bcd
Dakle, referentni tip pohranjuje nultu vrijednost ako nijedan objekt nije proslijeđen referentnom tipu.
Uzmimo primjer da bismo razumjeli kako referentna varijabla radi za nultu vrijednost:
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); } }
Izlaz:
Vrsta nule
U Javi, null nije ni objekt ni tip. To je posebna vrijednost koju možemo dodijeliti bilo kojoj varijabli referentnog tipa. Null možemo pretvoriti u bilo koji tip u kojem želimo, kao što su string, int, double itd.
Uzmimo primjer da bismo razumjeli kako možemo dodijeliti nulte vrijednosti bilo kojoj vrsti reference.
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); } }
Izlaz:
Autoboxing i Unboxing
Autoboxing i Raspakirati su dvije najvažnije operacije koje izvodimo u Javi. Prevoditelj baca NullPointerException kada dodijelimo nultu vrijednost bilo kojem primitivnom uokvirenom tipu podataka tijekom izvođenja operacija.
Uzmimo primjer da bismo razumjeli autoboxing i činjenicu otpakiranja null-a.
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); } }
Izlaz:
Instanca operatora
Kako bismo provjerili je li an objekt je li instanca navedenog tipa ili ne, koristimo instanceof operater. The instanceof operator vraća true kada vrijednost izraza nije null tijekom izvođenja. Igra važnu ulogu u provjerama tipiziranja.
Uzmimo primjer da bismo razumjeli instanceof operater:
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); } }
Izlaz:
Statični vs. Nestatičke metode
Ne možemo pozvati nestatičku metodu na referentnoj varijabli s nultom vrijednošću. Ako je pozovemo, izbacit će NullPointerException, ali možemo pozvati statičku metodu s referentnim varijablama s null vrijednostima. Budući da su statičke metode povezane pomoću statičkog povezivanja, one neće izbaciti iznimku Null pointer.
Uzmimo primjer da bismo razumjeli činjenicu nule:
koliko je 10 od 1 milijuna
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(); } }
Izlaz:
== i != Operatori
U Javi su ova dva operatora dopuštena s null. Oba operatora su korisna u provjeri null s objektima u Javi.
Uzmimo primjer da bismo razumjeli kako ova dva operatora rade s 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'); } } }
Izlaz:
Svaki Java programer trebao bi znati sve gore navedene činjenice o nullu.