logo

Zajímavá fakta o null v Javě

Téměř všechny programovací jazyky jsou spojeny s null. Není snad programátora, kterého by null netrápila. V Javě je null spojena s java.lang. Výjimka NullPointerException . Jelikož se jedná o třídu v balíku java.lang, volá se, když se pokoušíme provést nějaké operace s nebo bez null a někdy ani nevíme, kde se to stalo. Níže jsou uvedeny některé důležité body o null v jazyce Java, které by měl znát každý programátor Java: 

řetězec do pole java
  • V Javě je null speciální hodnota, která představuje nepřítomnost hodnoty nebo odkazu. Používá se k označení, že proměnná nebo objekt nemá aktuálně přiřazenou hodnotu.
  • Hodnota null není stejná jako prázdný řetězec nebo prázdné pole. Prázdný řetězec je řetězec, který neobsahuje žádné znaky, zatímco prázdné pole je pole, které neobsahuje žádné prvky.
  • Programovací jazyk Java má vestavěný typ null nazývaný 'null', což je podtyp všech typů odkazů. Nelze ji však použít jako typ pro proměnnou, protože nemá žádnou instanci a nelze ji konkretizovat.
  • Je považováno za osvědčený postup zkontrolovat hodnoty null před provedením jakékoli operace s nimi, abyste se vyhnuli riziku výjimky NullPointerException (NPE). NPE je považováno za jednu z nejběžnějších výjimek v Javě a může způsobit neočekávané chování nebo selhání programu.
  • V Javě se null také používá k označení, že metoda nevrací žádnou hodnotu. Toto je známé jako 'neplatný' návratový typ. Metoda void nevrací žádnou hodnotu a obvykle se používá k provedení akce, jako je tisk do konzoly nebo aktualizace databáze.
  • Kromě toho lze hodnotu null použít jako výchozí hodnotu pro volitelné parametry v metodě. To umožňuje volat metodu bez zadání hodnoty pro tento parametr a místo toho bude použita hodnota null.
  • Nedoporučuje se používat null jako hodnotu pro proměnnou nebo objekt, který má obsahovat hodnotu primitivního datového typu, jako je int nebo double, protože to způsobí chybu při kompilaci.
  • Použití null v Javě může být zdrojem zmatků a jemných chyb, takže je důležité být si vědomi jeho chování a toho, jak s ním správně zacházet v kódu, abyste předešli chybám.

1. null rozlišuje velká a malá písmena: null je v Javě doslovný a protože klíčová slova jsou rozlišují velká a malá písmena v Javě nemůžeme psát NULL nebo 0 jako v jazyce 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ční proměnné: Jakákoli referenční proměnná v Javě má ​​výchozí 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 rozdíl od běžné mylné představy null není objekt ani typ. Je to jen speciální hodnota, kterou lze přiřadit libovolnému typu odkazu a kterémukoli typu můžete zadat cast null Pří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: Během operací automatického boxu a unboxing kompilátor jednoduše vyvolá chybu výjimky Nullpointer, pokud je k primitivnímu boxovanému datovému typu přiřazena hodnota null. 

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. instanceof operátor: Operátor java instanceof se používá k testování, zda je objekt instancí zadaného typu (třída nebo podtřída nebo rozhraní). Za běhu je výsledek operátoru instanceof pravdivý, pokud hodnota výrazu není null. Toto je důležitá vlastnost operace instanceof, díky které je užitečná pro kontroly přetypování. 

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é metody: Nemůžeme volat nestatickou metodu na referenční proměnnou s hodnotou null, vyvolá to výjimku NullPointerException, ale můžeme volat statickou metodu s referenčními proměnnými s hodnotami null. Protože statické metody jsou spojeny pomocí statické vazby, nevyvolají výjimku ukazatele Null. 

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 != Porovnání a nerovná se operátory jsou povoleny s null v Javě. To může být užitečné při kontrole null s objekty v jazyce Java. 

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' lze předat jako argument v metodě:

Null můžeme předat jako argument v Javě a můžeme to samé vytisknout. Datový typ argumentu by měl být Reference Type. Ale návratový typ metody může být jakýkoli typ jako void int double nebo jakýkoli jiný referenční typ v závislosti na logice programu.

Zde metoda 'print_null' jednoduše vypíše argument, který je předán z hlavní metody.

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, já jsem: null

9. Operátor '+' na null:

Můžeme zřetězit hodnotu null s proměnnými String v jazyce Java. V Javě se považuje za zřetězení.

Zde bude null zřetězen pouze s proměnnou String. Pokud použijeme operátor '+' s nulou a jakýmkoli jiným typem (Integer Double atd.) jiným než String, vyvolá to chybovou zprávu. 

Celé číslo a=null+7 vyvolá chybovou zprávu jako „ špatné typy operandů pro binární 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