For at forstå, hvad null betyder i Java, lad os se på en analogi med tal: tallet 0 symboliserer fraværet af noget, og null betyder det samme, når det kommer til referencedatatyper. Hvis et felt af en referencetype (såsom String , Object eller StringBuilder ) ikke eksplicit er tildelt en værdi, så modtager det analogt med primitive typer en standardværdi, og denne værdi er null :

Kode Konsoludgang

public class Solution {

    public static int i;
    public static String s;

    public static void main(String[] args) {
        System.out.println(i);
        System.out.println(s);
    }
}
                    
0
null

Men hvis du erklærer et array som dette:


String[] strings = new String[12];

et array vil blive oprettet indeholdende 12 elementer, og alle vil være null :

Kode Konsoludgang

public class Solution {
    public static void main(String[] args) {
        String[] strings = new String[12];

        for (int i = 0; i < strings.length; i++) {
            System.out.println("Element " + i + ":" + strings[i]);
        }
    }
}
                    
Element 0: null
Element 1: null
Element 2: null
Element 3: null
Element 4: null
Element 5: null Element
6: null
Element 7: null
Element 8: null
Element 9: null
Element 10: null
Element 11: null

Som du kan se, når den er sammenkædet med en streng, bliver værdien null til strengen " null ". Når det er sagt, hvis du kalder toString()- metoden på den, sådan her:


String[] strings = null;
System.out.println(strings.toString());

så får du en NullPointerException (vi vil diskutere undtagelser i detaljer senere). Det samme sker, hvis du forsøger at kalde en anden metode på null (undtagelsen er statiske metoder, som du snart vil lære at kende):


public static void main(String[] args) {
    StringBuilder sb = null;
    sb.append("test"); // This will compile, but there will be a runtime error
}

null er blandt andet et reserveret søgeord (som public eller static ), så du kan ikke oprette en variabel, metode eller klasse med navnet null . Ligesom de andre er dette søgeord skelet mellem store og små bogstaver (du har måske bemærket, at vi skriver nul med små bogstaver overalt). Det betyder:


String firstName = Null; // Compilation error

String secondName = NULL; // Compilation error

String fullName = null; // This will compile

Lad os se på, hvad du ellers kan og ikke kan gøre med null :

  • Du kan tildele null til enhver reference:

    
    StringBuilder sb = null;
                
  • null kan castes til enhver referencetype:

    
    String s = (String) null; // This will compile, but doing this doesn't make any sense :)
                
  • null kan ikke tildeles en primitiv variabel:

    
    int i = null; // This won't compile
                
  • null kan sammenlignes med == og !=

  • null == null returnerer sand

I tidligere lektioner talte vi om, hvordan alt i Java er et objekt, og hvert objekt har en type.

Hvad kan vi sige om null i denne henseende? null er et bogstav af en bestemt type, og denne type har intet navn. Og da denne type ikke har noget navn, er det umuligt at erklære en variabel af denne type, eller at kaste til den. Null er således den eneste repræsentant for denne unavngivne type. I praksis kan vi ignorere denne type og tænke på null som en speciel bogstavelig, der kan tildeles enhver referencevariabel.

Ting at huske:

  • null er standardværdien for referencedatatyper
  • null betyder "ingen værdi"
  • Hvis vi kalder en metode på et objekt, hvis værdi er null , vil koden kompilere, men ved kørsel får vi en NullPointerException .