Beveik visos programavimo kalbos yra susietos su nuliu. Vargu ar yra programuotojas, kurio nevargintų nulis. Java null yra susietas java.lang. NullPointerException . Kadangi tai yra java.lang paketo klasė, ji vadinama, kai bandome atlikti kai kurias operacijas su nuliu arba be jos, o kartais net nežinome, kur tai atsitiko. Žemiau yra keletas svarbių dalykų, susijusių su java null, kuriuos turėtų žinoti kiekvienas Java programuotojas:
Išbandykite duomenų struktūrą
- Java „null“ yra speciali reikšmė, nurodanti vertės ar nuorodos nebuvimą. Jis naudojamas norint nurodyti, kad kintamasis ar objektas šiuo metu neturi jam priskirtos reikšmės.
- Nulinė reikšmė nėra tokia pati kaip tuščia eilutė arba tuščias masyvas. Tuščia eilutė yra eilutė, kurioje nėra simbolių, o tuščias masyvas yra masyvas, kuriame nėra jokių elementų.
- Java programavimo kalba turi įmontuotą nulinį tipą, vadinamą „null“, kuris yra visų nuorodų tipų potipis. Tačiau jis negali būti naudojamas kaip kintamojo tipas, nes jis neturi egzempliorių ir negali būti kartojamas.
- Manoma, kad geriausia praktika patikrinti nulines vertes prieš atliekant bet kokias operacijas, kad būtų išvengta NullPointerException (NPE) rizikos. NPE yra laikoma viena iš dažniausiai pasitaikančių „Java“ išimčių ir gali sukelti netikėtą programos elgesį arba gedimus.
- Java „null“ taip pat naudojamas norint nurodyti, kad metodas negrąžina jokios reikšmės. Tai žinoma kaip „tuščiojo“ grąžinimo tipas. Tuščiųjų metodas negrąžina jokios reikšmės ir paprastai naudojamas atliekant veiksmą, pvz., spausdinant į konsolę arba atnaujinant duomenų bazę.
- Be to, nulis gali būti naudojamas kaip numatytoji pasirenkamų metodo parametrų reikšmė. Tai leidžia iškviesti metodą nenurodant to parametro reikšmės, o vietoj to bus naudojama nulinė reikšmė.
- Nerekomenduojama naudoti null kaip vertės kintamajam arba objektui, kuriam skirta primityvaus duomenų tipo reikšmė, pvz., int arba double, nes tai sukels kompiliavimo laiko klaidą.
- Nul naudojimas Java gali sukelti painiavą ir subtilių klaidų, todėl svarbu žinoti, kaip jis elgiasi ir kaip tinkamai ją tvarkyti savo kode, kad išvengtumėte klaidų.
1. Nulis yra didžiosios ir mažosios raidės: null yra pažodinis Java ir todėl, kad raktiniai žodžiai yra didžiosios ir mažosios raidės Java negalime rašyti NULL arba 0 kaip C kalba.
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; } }
Išvestis:
5: error: cannot find symbol
can't find symbol 'NULL'
^
variable NULL
class Test
1 error
2. Nuorodos kintamojo reikšmė: Bet kuris „Java“ nuorodos kintamasis turi numatytąją reikšmę nulinis .
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); } }
Išvestis:
Value of object obj is : null 3. Nulinės vertės tipas: Skirtingai nuo paplitusio klaidingo supratimo, nulis nėra objektas ar tipas. Tai tik speciali reikšmė, kurią galima priskirti bet kokiam nuorodos tipui, o bet kokiam tipui galite įvesti cast null Pavyzdžiai:
// 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. Automatinis ir išpakavimas: Atliekant automatinio įpakavimo ir išpakavimo operacijas, kompiliatorius tiesiog išmeta Nullpointer išimties klaidą, jei primityviam dėžutės duomenų tipui priskiriama nulinė reikšmė.
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; } }
Išvestis:
Exception in thread 'main' java.lang.NullPointerException
at Test.main(Test.java:6)
5. Operatoriaus pavyzdys: Java instanceof operatorius naudojamas patikrinti, ar objektas yra nurodyto tipo egzempliorius (klasė, poklasis arba sąsaja). Vykdymo metu operatoriaus instanceof rezultatas yra teisingas, jei išraiškos reikšmė nėra nulinė. Tai yra svarbi operacijos egzemplioriaus savybė, todėl ji naudinga tikrinant tipo liejimą.
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); } }
Išvestis:
false
true
6. Statiniai ir nestatiniai metodai: Negalime iškviesti nestatinio metodo, naudojant atskaitos kintamąjį, kurio reikšme yra nul. Jis išmes NullPointerException, bet galime iškviesti statinį metodą su atskaitos kintamaisiais su nulinėmis reikšmėmis. Kadangi statiniai metodai yra surišti naudojant statinį susiejimą, jie neišmes nulinės žymeklio išimties.
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;); } }
Išvestis:
static method can be called by null referenceException in thread 'main'
java.lang.NullPointerException
at Test.main(Test.java:5)
7. == ir != Palyginimas ir nelygus operatoriams leidžiamas su null Java. Tai gali būti naudinga tikrinant nulį su java objektais.
Javapublic class Test { public static void main(String args[]) { // return true; System.out.println(null == null); // return false; System.out.println(null != null); } }
Išvestis:
true
false
8 . 'null' gali būti perduodamas kaip metodo argumentas:
Mes galime perduoti nulį kaip argumentą Java ir galime atspausdinti tą patį. Argumento duomenų tipas turi būti nuorodos tipas. Tačiau metodo grąžinimo tipas gali būti bet koks, kaip void int double, arba bet koks kitas nuorodos tipas, priklausomai nuo programos logikos.
Čia metodas "print_null" tiesiog išspausdins argumentą, kuris perduodamas iš pagrindinio metodo.
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); } }
Išvestis:
Sveiki, aš esu: nulis
9. „+“ operatorius null :
Nulinę reikšmę galime sujungti su String kintamaisiais Java. Tai laikoma sujungimu Java.
Čia nulis bus sujungtas tik su kintamuoju String. Jei naudosime operatorių „+“ su nuliu ir bet kokiu kitu tipu (Integer Double ir kt.), išskyrus String, bus rodomas klaidos pranešimas.
Sveikasis skaičius a=null+7 pateiks klaidos pranešimą kaip „ blogi operandų tipai dvejetainiam operatoriui „+“
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); } }
Išvestis
Concatenated value : null_value