Skoraj vsi programski jeziki so povezani z null. Skorajda ni programerja, ki ga null ne bi mučil. V Javi je null povezan z java.lang. NullPointerException . Ker je razred v paketu java.lang, se pokliče, ko poskušamo izvesti nekatere operacije z ali brez null in včasih sploh ne vemo, kje se je to zgodilo. Spodaj je nekaj pomembnih točk o null v Javi, ki bi jih moral poznati vsak programer Jave:
kmp algoritem
- V Javi je null posebna vrednost, ki predstavlja odsotnost vrednosti ali reference. Uporablja se za označevanje, da spremenljivka ali predmet trenutno nima dodeljene vrednosti.
- Ničelna vrednost ni enaka praznemu nizu ali praznemu polju. Prazen niz je niz, ki ne vsebuje znakov, medtem ko je prazen niz niz, ki ne vsebuje elementov.
- Programski jezik Java ima vgrajen ničelni tip, imenovan 'null', ki je podtip vseh referenčnih tipov. Vendar ga ni mogoče uporabiti kot tip za spremenljivko, ker nima nobenega primerka in ga ni mogoče instancirati.
- Najboljša praksa je, da preverite ničelne vrednosti, preden na njih izvedete kakršne koli operacije, da se izognete tveganju NullPointerException (NPE). NPE velja za eno najpogostejših izjem v Javi in lahko povzroči nepričakovano vedenje ali zrušitve programa.
- V Javi se null uporablja tudi za označevanje, da metoda ne vrne nobene vrednosti. To je znano kot vrnjena vrsta 'niz'. Metoda void ne vrne nobene vrednosti in se običajno uporablja za izvajanje dejanj, kot je tiskanje na konzolo ali posodabljanje baze podatkov.
- Poleg tega lahko null uporabite kot privzeto vrednost za neobvezne parametre v metodi. To omogoča klic metode brez podajanja vrednosti za ta parameter in namesto tega bo uporabljena ničelna vrednost.
- Ni priporočljivo uporabljati null kot vrednost za spremenljivko ali predmet, ki naj bi hranil vrednost primitivnega podatkovnega tipa, kot je int ali double, ker bo povzročil napako med prevajanjem.
- Uporaba null v Javi je lahko vir zmede in subtilnih napak, zato je pomembno, da se zavedate njenega vedenja in kako z njo pravilno ravnati v kodi, da preprečite napake.
1. null je občutljiv na velike in male črke: null je v Javi dobeseden in ker so ključne besede razlikuje med velikimi in malimi črkami v javi ne moremo napisati NULL ali 0 kot v jeziku 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; } }
Izhod:
5: error: cannot find symbol
can't find symbol 'NULL'
^
variable NULL
class Test
1 error
2. Vrednost referenčne spremenljivke: Vsaka referenčna spremenljivka v Javi ima privzeto vrednost 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); } }
Izhod:
Value of object obj is : null 3. Vrsta ničelne vrednosti: V nasprotju s pogostim napačnim prepričanjem null ni predmet ali noben tip. To je le posebna vrednost, ki jo je mogoče dodeliti kateremu koli referenčnemu tipu in kateremu koli tipu lahko vnesete cast null Primeri:
// 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. Samodejno pakiranje in razpakiranje: Med operacijami samodejnega pakiranja in razpakiranja prevajalnik preprosto vrže napako izjeme Nullpointer, če je primitivnemu podatkovnemu tipu v okvirju dodeljena ničelna vrednost.
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; } }
Izhod:
Exception in thread 'main' java.lang.NullPointerException
at Test.main(Test.java:6)
5. primerek operaterja: Operator java instanceof se uporablja za preverjanje, ali je predmet primerek navedene vrste (razred ali podrazred ali vmesnik). V času izvajanja je rezultat operatorja instanceof resničen, če vrednost izraza ni ničelna. To je pomembna lastnost operacije instanceof, zaradi katere je uporabna za preverjanje ulitja tipa.
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); } }
Izhod:
false
true
6. Statične proti nestatičnim metodam: Ne moremo klicati nestatične metode za referenčno spremenljivko z ničelno vrednostjo, vrgla bo NullPointerException, lahko pa kličemo statično metodo z referenčnimi spremenljivkami z ničelnimi vrednostmi. Ker so statične metode povezane s statično vezavo, ne bodo vrgle izjeme ničelnega kazalca.
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;); } }
Izhod:
static method can be called by null referenceException in thread 'main'
java.lang.NullPointerException
at Test.main(Test.java:5)
7. == in != Operatorja primerjava in ni enako sta v Javi dovoljena z vrednostjo null. To je lahko uporabno pri preverjanju vrednosti null s predmeti v Javi.
Javapublic class Test { public static void main(String args[]) { // return true; System.out.println(null == null); // return false; System.out.println(null != null); } }
Izhod:
true
false
8 . 'null' se lahko posreduje kot argument v metodi:
Ničelo lahko posredujemo kot argument v Javi in lahko natisnemo isto. Podatkovni tip argumenta mora biti Referenčni tip. Toda povratni tip metode je lahko kateri koli tip, kot je void int double ali kateri koli drug referenčni tip, odvisno od logike programa.
Tukaj bo metoda 'print_null' preprosto natisnila argument, ki je bil posredovan iz glavne metode.
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); } }
Izhod:
Hej jaz sem: nič
9. Operator '+' na null:
Ničelno vrednost lahko združimo s spremenljivkami String v Javi. V Javi velja za veriženje.
Tukaj bo ničelna vrednost povezana le s spremenljivko String. Če uporabimo operator '+' z ničlo in katero koli drugo vrsto (Integer Double itd.), ki ni niz, bo vrglo sporočilo o napaki.
Integer a=null+7 bo vrglo sporočilo o napaki kot ' slabe vrste operandov za binarni operator '+' '
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); } }
Izhod
Concatenated value : null_value