logo

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: 

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

Java
public 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. 

Java
public 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. 

Java
public 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. 

Java
public 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. 

Java
public 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.

Java
import 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 '+' '

Java
import 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