Zaujímavé fakty o null v Jave
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:
- 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 error2. 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 ( & quot ; Value of object obj is : & quot ; + obj ); } }výstup:
Value of object obj is : null3. 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
true6. 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 ( & quot ; static method can be called by null reference & quot ;); } private void nonStaticMethod () { // Can not be called by null reference System . out . print ( & quot ; Non - static method - & quot ;); System . out . println ( & quot ; 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
false8 . '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ýstupConcatenated value : null_value