Érdekes tények a Java nulláról

Szinte az összes programozási nyelv null-hoz van kötve. Alig van olyan programozó, akit ne zavarna a null. Java-ban a null a java.langhoz kapcsolódik. NullPointerException . Mivel ez egy osztály a java.lang csomagban, akkor hívják, amikor néhány műveletet nullával vagy anélkül próbálunk végrehajtani, és néha azt sem tudjuk, hol történt. Az alábbiakban felsorolunk néhány fontos pontot a java nulláról, amelyeket minden Java programozónak tudnia kell: 

  • Java-ban a null egy speciális érték, amely az érték vagy hivatkozás hiányát jelzi. Azt jelzi, hogy egy változóhoz vagy objektumhoz jelenleg nincs érték hozzárendelve.
  • A null érték nem ugyanaz, mint egy üres karakterlánc vagy egy üres tömb. Az üres karakterlánc olyan karakterlánc, amely nem tartalmaz karaktereket, míg az üres tömb olyan tömb, amely nem tartalmaz elemeket.
  • A Java programozási nyelvnek van egy beépített null típusa, az úgynevezett „null”, amely az összes referenciatípus altípusa. Azonban nem használható egy változó típusaként, mert nincs példánya, és nem példányosítható.
  • A NullPointerException (NPE) kockázatának elkerülése érdekében bevált gyakorlatnak tekintjük a null értékek ellenőrzését, mielőtt bármilyen műveletet végrehajtana rajtuk. Az NPE a Java egyik leggyakoribb kivétele, és váratlan viselkedést vagy összeomlást okozhat a programban.
  • Java-ban a null értéket is használják annak jelzésére, hogy a metódus nem ad vissza értéket. Ezt „üres” visszatérési típusnak nevezik. A void metódus nem ad vissza értéket, és általában olyan műveletek végrehajtására szolgál, mint a konzolra való nyomtatás vagy az adatbázis frissítése.
  • Ezenkívül a null alapértelmezett értékként használható a metódus választható paramétereihez. Ez lehetővé teszi egy metódus meghívását anélkül, hogy megadnánk az adott paraméterhez tartozó értéket, és helyette a null értéket kell használni.
  • Nem ajánlott null értéket használni olyan változókhoz vagy objektumokhoz, amelyek primitív adattípusok (például int vagy double) értékét tartalmazzák, mert ez fordítási hibát okoz.
  • A null használata a Java-ban zavart és finom hibákat okozhat, ezért fontos tisztában lenni a viselkedésével és azzal, hogyan kell megfelelően kezelni a kódban a hibák elkerülése érdekében.

1. null a kis- és nagybetűk megkülönböztetése: A null szó szerint szerepel a Java nyelvben, és mivel a kulcsszavak igen kis- és nagybetűk megkülönböztetése java-ban nem írhatunk NULL-t vagy 0-t, mint a C nyelvben. 

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  ;         }   }   

Kimenet:

 5: error: cannot find symbol   
can't find symbol 'NULL'
^
variable NULL
class Test
1 error

2. Referenciaváltozó értéke: A Java bármely referenciaváltozójának alapértelmezett értéke van null

Java
   public     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  );      }      }   

Kimenet:

 Value of object obj is : null   

3. Null típusa: Az általános tévhittől eltérően a null nem objektum vagy nem típus. Ez csak egy speciális érték, amely bármely referenciatípushoz hozzárendelhető, és bármilyen típushoz beírhatja a cast null értéket. Példák:

  // 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. Automatikus dobozolás és kicsomagolás: Az automatikus dobozolási és kicsomagolási műveletek során a fordító egyszerűen Nullpointer kivétel hibát dob, ha null értéket rendelünk a primitív dobozos adattípushoz. 

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  ;      }   }   

Kimenet:

  Exception in thread 'main' java.lang.NullPointerException   
at Test.main(Test.java:6)

5. operátor példánya: A java instanceof operátor annak tesztelésére szolgál, hogy az objektum a megadott típusú (osztály vagy alosztály vagy interfész) példánya-e. Futás közben az instanceof operátor eredménye igaz, ha az Expression értéke nem null. Ez az instanceof művelet fontos tulajdonsága, ami hasznossá teszi a típusöntési ellenőrzésekhez. 

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  );      }   }   

Kimenet:

 false    
true

6. Statikus és nem statikus módszerek: Nem hívhatunk nem statikus metódust nulla értékű referenciaváltozón, ez NullPointerException-t dob, de hívhatunk statikus metódust nulla értékű referenciaváltozókkal. Mivel a statikus metódusok statikus kötéssel vannak összekötve, nem dobnak ki nullamutató kivételt. 

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  (      &  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  ;);      }   }   

Kimenet:

 static method can be called by null referenceException in thread 'main'    
java.lang.NullPointerException
at Test.main(Test.java:5)

7. == és != Az összehasonlítás és a nem egyenlő operátorok megengedettek a nullával a Java-ban. Ez hasznos lehet a null ellenőrzéséhez Java objektumokkal. 

Java
   public     class   Test     {      public     static     void     main  (  String     args  []  )      {      // return true;      System  .  out  .  println  (  null     ==     null  );      // return false;      System  .  out  .  println  (  null     !=     null  );      }   }   

Kimenet:

 true   
false

8 . A "null" argumentumként adható át a metódusban:

Java-ban átadhatjuk a nullát argumentumként, és ki is nyomtathatjuk. Az argumentum adattípusának Referencia típusnak kell lennie. De a metódus visszatérési típusa bármilyen típusú lehet void int double vagy bármilyen más hivatkozási típus, a program logikájától függően.

Itt a 'print_null' metódus egyszerűen kiírja a fő metódusból átadott argumentumot.

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  );      }   }   

Kimenet:

Szia én vagyok: null

9. '+' operátor nullán:

A null értéket a String változókkal összefűzhetjük a java-ban. Java-ban összefűzésnek számít.

Itt a null csak a String változóval lesz összefűzve. Ha '+' operátort használunk nullával és bármilyen más típussal (Integer Double stb.) a String kivételével, hibaüzenetet ad. 

Az a=null+7 egész szám hibaüzenetet ad: " rossz operandustípusok a '+'' bináris operátorhoz

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  );      }   }   

Kimenet
Concatenated value : null_value