Takmer všetky programovacie jazyky sú spojené s nulou. Sotva existuje programátor, ktorého netrápi null. V jazyku Java je null spojený java.lang. Výnimka NullPointerException . Keďže ide o triedu v balíku java.lang, volá sa, keď sa pokúšame vykonať nejaké operácie s alebo bez null a niekedy ani nevieme, kde sa to stalo. Nižšie sú uvedené niektoré dôležité body o null v jazyku Java, ktoré by mal vedieť každý programátor Java:
aritmeticko logická jednotka
- V jazyku Java je null špeciálna hodnota, ktorá predstavuje absenciu hodnoty alebo odkazu. Používa sa na označenie, že premenná alebo objekt nemá momentálne priradenú hodnotu.
- Hodnota null nie je rovnaká ako prázdny reťazec alebo prázdne pole. Prázdny reťazec je reťazec, ktorý neobsahuje žiadne znaky, zatiaľ čo prázdne pole je pole, ktoré neobsahuje žiadne prvky.
- Programovací jazyk Java má vstavaný typ null nazývaný „null“, ktorý je podtypom všetkých referenčných typov. Nemožno ju však použiť ako typ premennej, pretože nemá žiadnu inštanciu a nemožno ju vytvoriť.
- Za osvedčený postup sa považuje kontrola nulových hodnôt pred vykonaním akýchkoľvek operácií na nich, aby sa predišlo riziku výnimky NullPointerException (NPE). NPE sa považuje za jednu z najbežnejších výnimiek v jazyku Java a môže spôsobiť neočakávané správanie alebo zlyhanie programu.
- V jazyku Java sa null používa aj na označenie, že metóda nevracia žiadnu hodnotu. Toto je známe ako „neplatný“ typ návratu. A void method does not return any value and is typically used for performing an action such as printing to the console or updating a database.
- Okrem toho možno hodnotu null použiť ako predvolenú hodnotu pre voliteľné parametre v metóde. To umožňuje volať metódu bez zadania hodnoty pre tento parameter a namiesto toho sa použije hodnota null.
- Neodporúča sa používať null ako hodnotu pre premennú alebo objekt, ktorý má obsahovať hodnotu primitívneho dátového typu, ako je int alebo double, pretože to spôsobí chybu pri kompilácii.
- Použitie null v jazyku Java môže byť zdrojom zmätku a jemných chýb, takže je dôležité poznať jeho správanie a ako s ním správne zaobchádzať v kóde, aby sa predišlo chybám.
1. null rozlišuje malé a veľké písmená: null je v jazyku Java doslovný a pretože kľúčové slová sú rozlišovať malé a veľké písmená v jave nemôžeme napísať NULL alebo 0 ako v jazyku 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; } }
výstup:
5: error: cannot find symbol
can't find symbol 'NULL'
^
variable NULL
class Test
1 error
2. Hodnota referenčnej premennej: Každá referenčná premenná v jazyku Java má predvolenú hodnotu null .
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); } }
výstup:
Value of object obj is : null 3. Typ null: Na rozdiel od bežnej mylnej predstavy null nie je objekt ani typ. Je to len špeciálna hodnota, ktorá môže byť priradená akémukoľvek typu odkazu a akémukoľvek typu môžete zadať cast null Príklady:
// 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 a unboxing: Počas operácií automatického rozbaľovania a rozbaľovania kompilátor jednoducho vyvolá chybu výnimky Nullpointer, ak je primitívnemu boxovanému dátovému typu priradená nulová hodnota.
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; } }
výstup:
Exception in thread 'main' java.lang.NullPointerException
at Test.main(Test.java:6)
5. inštancia operátora: Operátor java instanceof sa používa na testovanie, či je objekt inštanciou zadaného typu (trieda alebo podtrieda alebo rozhranie). V čase spustenia je výsledok operátora instanceof pravdivý, ak hodnota výrazu nie je nulová. Toto je dôležitá vlastnosť operácie instanceof, vďaka ktorej je užitočná na kontroly typového pretypovania.
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); } }
výstup:
false
true
6. Statické vs nestatické metódy: Nemôžeme volať nestatickú metódu na referenčnú premennú s hodnotou null, vyvolá to výnimku NullPointerException, ale môžeme volať statickú metódu s referenčnými premennými s hodnotami null. Keďže statické metódy sú spojené pomocou statickej väzby, nevyvolávajú výnimku nulového ukazovateľa.
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;); } }
výstup:
static method can be called by null referenceException in thread 'main'
java.lang.NullPointerException
at Test.main(Test.java:5)
7. == a != Porovnanie a nerovnaké operátorom sú povolené s null v jazyku Java. To môže byť užitočné pri kontrole null s objektmi v jave.
Javapublic class Test { public static void main(String args[]) { // return true; System.out.println(null == null); // return false; System.out.println(null != null); } }
výstup:
true
false
8 . 'null' možno odovzdať ako argument v metóde:
Môžeme odovzdať null ako argument v jave a môžeme vytlačiť to isté. Typ údajov argumentu by mal byť Referenčný typ. Návratový typ metódy však môže byť akýkoľvek typ ako void int double alebo akýkoľvek iný referenčný typ v závislosti od logiky programu.
Tu metóda 'print_null' jednoducho vypíše argument, ktorý je odovzdaný z hlavnej metódy.
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); } }
výstup:
Ahoj, ja som: null
9. Operátor „+“ na nule:
Hodnotu null môžeme spojiť s premennými typu String v jazyku Java. V jave sa považuje za zreťazenie.
Tu bude hodnota null spojená iba s premennou String. Ak použijeme operátor '+' s nulou a akýmkoľvek iným typom (Integer Double atď.) okrem String, vyvolá to chybové hlásenie.
Celé číslo a=null+7 vyvolá chybové hlásenie ako „ zlé typy operandov pre binárny operátor '+' '
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); } }
Výstup
Concatenated value : null_value