JavaRush /Blog Jawa /Random-JV /Apa null obyek ing Jawa?

Apa null obyek ing Jawa?

Diterbitake ing grup
Apa null obyek? Aku pancen bisa ngomong sing ora. Ing pangertèn sing (null instanceof Object)bakal menehi nilai false. Mangkene apa maneh sampeyan kudu ngerti babagan null:
Apa null obyek ing Jawa?  - 1
  1. Sampeyan ora bisa nelpon cara karo nilai null: x.m()bakal uncalan kesalahan nalika xNilai null lan mcara non-statis. Miturut cara, yen mcara statis, kabeh apik, amarga mung kelas sing penting x, lan nilai ora digatekake.

  2. Mung ana siji null kanggo kabeh, lan ora kapisah kanggo saben kelas. Mangkono, ((String) null == (Hashtable) null)contone.

  3. Iku becik ditrima kanggo pass null minangka parameter kanggo cara yen cara ngidini (sawetara cara ngidini parameter null, liyane ora). Dadi, contone, sampeyan bisa uga nulis System.out.println (null), nanging butstring.compareTo (null)ora bisa. Dadi, mesthi nuduhake ing komentar javadoc babagan metode sampeyan manawa null bisa ditampa minangka paramèter, yen ora jelas.

  4. Ing JDK saka versi 1.1 kanggo 1.1.5, maringaken null minangka bantahan harfiah kanggo konstruktor saka kelas utama anonim (Contone, new SomeClass(null) { ...}nyebabake kesalahan compiler. Nanging, sampeyan bisa pass expression karo Nilai null, utawa pass dipeksa. null, ing wangunnew SomeClass((String) null) { ...}

  5. Paling ora ana telung kasus sing beda-beda, sing biasane ditulis nganggo null:

    • Uninitialized (ora ana initialization). Variabel utawa slot sing durung diwenehi nilai.

    • Ora ana / ora ditrapake .Contone, simpul terminal saka wit binar bisa diarani simpul biasa karo anak null.

    • Kosong (kosong saka soko). Contone, sampeyan bisa nggunakake null kanggo makili wit kosong. Elinga yen iki cukup beda saka kasus sadurunge (padha asring bingung ing laku). Bentenane yaiku apa null minangka simpul wit sing bisa ditampa utawa yen null tegese nilai kasebut ora perlu dianggep minangka simpul wit.

    Bandhingake telung implementasi simpul wit binar kanthi cara output konsol urutan:


  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 jawaban: Peter Norvig, ilmuwan Amerika ing bidang intelijen buatan, direktur riset ing Google
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION