JavaRush /Java Blog /Random-ID /Apakah null merupakan objek di Java?

Apakah null merupakan objek di Java?

Dipublikasikan di grup Random-ID
Apakah null sebuah objek? Saya benar-benar dapat mengatakan bahwa itu tidak benar. Dalam artian (null instanceof Object)akan memberikan nilai false. Inilah hal lain yang perlu Anda ketahui tentang null:
Apakah null merupakan objek di Java?  - 1
  1. Anda tidak dapat memanggil metode dengan nilai null: x.m()metode tersebut akan menimbulkan kesalahan ketika xnilainya nol dan mmetode tersebut non-statis. Omong-omong, jika mini adalah metode statis, semuanya baik-baik saja, karena hanya kelasnya yang penting x, dan nilainya diabaikan.

  2. Hanya ada satu null untuk semua, dan tidak ada satu null terpisah untuk setiap kelas. Jadi, ((String) null == (Hashtable) null)misalnya.

  3. Sangat dapat diterima untuk meneruskan null sebagai parameter ke suatu metode jika metode tersebut mengizinkannya (beberapa metode mengizinkan parameter nol, yang lain tidak). Jadi, misalnya, Anda mungkin menulis System.out.println (null), tetapi butstring.compareTo (null)tidak berhasil. Jadi selalu tunjukkan di komentar javadoc metode Anda apakah null dapat diterima sebagai parameternya, jika tidak sepenuhnya jelas.

  4. Di JDK dari versi 1.1 hingga 1.1.5, meneruskan null sebagai argumen literal ke konstruktor kelas dalam anonim (misalnya, new SomeClass(null) { ...}menyebabkan kesalahan kompiler. Namun, Anda dapat meneruskan ekspresi dengan nilai null, atau meneruskan ekspresi paksa nol, dalam bentuknew SomeClass((String) null) { ...}

  5. Setidaknya ada tiga kasus berbeda, yang biasanya dinyatakan menggunakan null:

    • Tidak diinisialisasi (tidak ada inisialisasi). Variabel atau slot yang belum diberi nilai apa pun.

    • Tidak ada/tidak berlaku Misalnya, node terminal dari pohon biner dapat disebut node biasa dengan anak nol.

    • Kosong (kekosongan dari sesuatu). Misalnya, Anda dapat menggunakan null untuk mewakili pohon kosong. Perhatikan bahwa ini sangat berbeda dari kasus sebelumnya (dalam praktiknya sering kali membingungkan). Perbedaannya adalah apakah null merupakan simpul pohon yang dapat diterima atau apakah null berarti nilainya tidak perlu diperlakukan sebagai simpul pohon.

    Bandingkan tiga implementasi node pohon biner dengan metode keluaran konsol berurutan:


  6. // null означает «не применимо»
    // Здесь нет пустого дерева.
    class Node {
      Object data;
      Node left, right;
    
      void print() {
        if (left != null)
          left.print();
        System.out.println(data);
        if (right != null)
          right.print();
      }
    }

  7. // null означает пустое дерево
    // обратите внимание на статические и нестатические методы
    
    class Node {
      Object data;
      Node left, right;
    
      void static print(Node node) {
        if (node != null) node.print();
      }
    
      void print() {
        print(left);
        System.out.println(data);
        print(right);
      }
    }

  8. // Отдельный класс для Empty
    // null не используется
    
    interface Node { void print(); }
    
    class DataNode implements Node{
      Object data;
      Node left, right;
    
      void print() {
        left.print();
        System.out.println(data);
        right.print();
      }
    }
    
    class EmptyNode implements Node {
      void print() { }
    }
Penulis jawabannya: Peter Norvig, ilmuwan Amerika di bidang kecerdasan buatan, direktur penelitian di Google
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION