Untuk memahami apa arti null di Java, mari kita lihat analogi dengan angka: angka 0 melambangkan ketiadaan sesuatu, dan null memiliki arti yang sama dalam kaitannya dengan tipe data referensi. Jika bidang dari tipe referensi (seperti String , Object , atau StringBuilder ) tidak diberi nilai secara eksplisit, maka, dengan analogi dengan tipe primitif, ia menerima nilai default, dan nilai tersebut adalah null :

Kode Keluaran konsol

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
nol

Tetapi jika Anda mendeklarasikan array seperti ini:


String[] strings = new String[12];

sebuah array akan dibuat yang berisi 12 elemen, dan semuanya akan menjadi null :

Kode Keluaran konsol

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]);
        }
    }
}
                    
Elemen 0: null
Elemen 1: null
Elemen 2: null
Elemen 3: null
Elemen 4: null
Elemen 5: null
Elemen 6: null
Elemen 7: null
Elemen 8: null
Elemen 9: null
Elemen 10: null
Elemen 11: null

Seperti yang Anda lihat, saat digabungkan dengan string, nilai null menjadi string " null ". Yang mengatakan, jika Anda memanggil metode toString() di atasnya, seperti ini:


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

maka Anda akan mendapatkan NullPointerException ( kami akan membahas pengecualian secara detail nanti). Hal yang sama terjadi jika Anda mencoba memanggil metode lain pada null (pengecualian adalah metode statis, yang akan segera Anda ketahui):


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

null antara lain adalah kata kunci yang dicadangkan (seperti public atau static ), jadi Anda tidak dapat membuat variabel, metode, atau kelas bernama null . Seperti kata kunci lainnya, kata kunci ini peka terhadap huruf besar-kecil (Anda mungkin memperhatikan bahwa kami menulis null dengan huruf kecil di semua tempat). Itu berarti:


String firstName = Null; // Compilation error

String secondName = NULL; // Compilation error

String fullName = null; // This will compile

Mari kita lihat apa lagi yang bisa dan tidak bisa Anda lakukan dengan null :

  • Anda dapat menetapkan nol ke referensi apa pun:

    
    StringBuilder sb = null;
                
  • null dapat dilemparkan ke jenis referensi apa pun:

    
    String s = (String) null; // This will compile, but doing this doesn't make any sense :)
                
  • null tidak dapat ditugaskan ke variabel primitif:

    
    int i = null; // This won't compile
                
  • null dapat dibandingkan menggunakan == dan !=

  • null == null mengembalikan nilai benar

Dalam pelajaran sebelumnya, kita berbicara tentang bagaimana semua yang ada di Java adalah objek, dan setiap objek memiliki tipe.

Apa yang bisa kita katakan tentang nol dalam hal ini? null adalah literal dari tipe tertentu, dan tipe ini tidak memiliki nama. Dan karena tipe ini tidak memiliki nama, tidak mungkin mendeklarasikan variabel tipe ini, atau mentransmisikannya. Jadi, null adalah satu-satunya perwakilan dari tipe yang tidak disebutkan namanya ini. Dalam praktiknya, kita dapat mengabaikan tipe ini, dan menganggap null sebagai literal khusus yang dapat diberikan ke variabel referensi apa pun.

Hal-hal untuk diingat:

  • null adalah nilai default untuk tipe data referensi
  • null berarti "tidak ada nilai"
  • Jika kita memanggil metode apa pun pada objek yang nilainya null , kode akan dikompilasi tetapi saat runtime kita akan mendapatkan NullPointerException .