Gotovo svi programski jezici povezani su s null. Gotovo da nema programera kojeg ne muči null. U Javi je null pridružen java.lang. NullPointerException . Budući da je to klasa u java.lang paketu, poziva se kada pokušamo izvesti neke operacije sa ili bez null-a, a ponekad čak ni ne znamo gdje se to dogodilo. Ispod su neke važne točke o null u Javi koje bi svaki Java programer trebao znati:
vodeni žig u wordu
- U Javi null je posebna vrijednost koja predstavlja odsutnost vrijednosti ili reference. Koristi se za označavanje da varijabla ili objekt trenutno nema dodijeljenu vrijednost.
- Null vrijednost nije isto što i prazan niz ili prazan niz. Prazan niz je niz koji ne sadrži znakove, dok je prazan niz niz koji ne sadrži elemente.
- Programski jezik Java ima ugrađeni null tip nazvan 'null' koji je podtip svih referentnih tipova. Međutim, ne može se koristiti kao tip za varijablu jer nema instancu i ne može se instancirati.
- Smatra se najboljom praksom provjeriti null vrijednosti prije izvođenja bilo kakvih operacija na njima kako bi se izbjegao rizik od NullPointerException (NPE). NPE se smatra jednom od najčešćih iznimaka u Javi i može uzrokovati neočekivano ponašanje ili rušenje programa.
- U Javi se null također koristi za označavanje da metoda ne vraća nikakvu vrijednost. Ovo je poznato kao povratni tip 'void'. Metoda void ne vraća nikakvu vrijednost i obično se koristi za izvođenje radnji kao što je ispis na konzolu ili ažuriranje baze podataka.
- Osim toga, null se može koristiti kao zadana vrijednost za neobavezne parametre u metodi. To omogućuje pozivanje metode bez navođenja vrijednosti za taj parametar i umjesto toga koristit će se nulta vrijednost.
- Ne preporuča se koristiti null kao vrijednost za varijablu ili objekt koji treba držati vrijednost primitivnog tipa podataka kao što je int ili double jer će uzrokovati pogrešku tijekom kompilacije.
- Korištenje null-a u Javi može biti izvor zabune i suptilnih grešaka pa je važno biti svjestan njegovog ponašanja i kako pravilno rukovati njime u svom kodu kako biste spriječili pogreške.
1. null razlikuje velika i mala slova: null je doslovan u Javi i zato što su ključne riječi velika i mala slova u Javi ne možemo napisati NULL ili 0 kao u C jeziku.
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; } }
Izlaz:
5: error: cannot find symbol
can't find symbol 'NULL'
^
variable NULL
class Test
1 error
2. Vrijednost referentne varijable: Svaka referentna varijabla u Javi ima zadanu vrijednost ništavan .
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); } }
Izlaz:
Value of object obj is : null 3. Vrsta nule: Za razliku od uobičajene zablude, null nije objekt ili niti jedan tip. To je samo posebna vrijednost koja se može dodijeliti bilo kojoj vrsti reference i možete upisati cast null bilo kojoj vrsti Primjeri:
// 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. Autoboxing i unboxing: Tijekom operacija auto-boxing i unboxing kompajler jednostavno izbacuje pogrešku izuzetka Nullpointer ako je null vrijednost dodijeljena primitivnom boxed tipu podataka.
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; } }
Izlaz:
Exception in thread 'main' java.lang.NullPointerException
at Test.main(Test.java:6)
5. instanca operatora: Java operator instanceof koristi se za testiranje je li objekt instanca navedenog tipa (klasa ili podklasa ili sučelje). Tijekom izvođenja rezultat operatora instanceof je istinit ako vrijednost izraza nije null. Ovo je važno svojstvo operacije instanceof koje ga čini korisnim za provjere pretvaranja tipa.
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); } }
Izlaz:
false
true
6. Statičke protiv nestatičkih metoda: Ne možemo pozvati nestatičku metodu na referentnoj varijabli s null vrijednošću, ona će izbaciti 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.
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;); } }
Izlaz:
static method can be called by null referenceException in thread 'main'
java.lang.NullPointerException
at Test.main(Test.java:5)
7. == i != Operatori usporedbe i not equal dopušteni su s null u Javi. Ovo može biti korisno u provjeri null-a s objektima u Javi.
Javapublic class Test { public static void main(String args[]) { // return true; System.out.println(null == null); // return false; System.out.println(null != null); } }
Izlaz:
true
false
8 . 'null' se može proslijediti kao argument u metodi:
Možemo proslijediti null kao argument u Javi i možemo ispisati isto. Tip podataka argumenta trebao bi biti Referentni tip. Ali povratni tip metode može biti bilo koji tip kao što je void int double ili bilo koji drugi referentni tip ovisno o logici programa.
Ovdje će metoda 'print_null' jednostavno ispisati argument koji je proslijeđen iz glavne metode.
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); } }
Izlaz:
Hej ja sam: nula
9. '+' operator na null:
Null vrijednost možemo povezati sa String varijablama u Javi. Smatra se ulančavanjem u Javi.
Ovdje će null biti spojen samo s varijablom String. Ako koristimo '+' operator s null i bilo kojim drugim tipom (Integer Double itd.) osim String-a, izbacit će poruku o pogrešci.
Integer a=null+7 izbacit će poruku o pogrešci kao ' loši tipovi operanda za binarni operator '+' '
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); } }
Izlaz
Concatenated value : null_value