JavaRush /Blog Java /Random-VI /null có phải là một đối tượng trong Java không?

null có phải là một đối tượng trong Java không?

Xuất bản trong nhóm
null có phải là một đối tượng không? Tôi hoàn toàn có thể nói rằng không phải vậy. Theo nghĩa là (null instanceof Object)nó sẽ cho giá trị false. Đây là những gì bạn cần biết về null:
null có phải là một đối tượng trong Java không?  - 1
  1. Bạn không thể gọi một phương thức có giá trị null: x.m()nó sẽ báo lỗi khi xgiá trị đó là null và mphương thức đó không tĩnh. Nhân tiện, nếu mđó là một phương thức tĩnh thì mọi thứ đều ổn, vì chỉ có lớp là quan trọng xvà giá trị bị bỏ qua.

  2. Chỉ có một giá trị rỗng cho tất cả và không có giá trị rỗng riêng cho mỗi lớp. Vì vậy, ((String) null == (Hashtable) null)ví dụ.

  3. Hoàn toàn có thể chấp nhận được việc truyền null làm tham số cho một phương thức nếu phương thức đó cho phép điều đó (một số phương thức cho phép tham số null, một số khác thì không). Vì vậy, ví dụ, bạn có thể viết tốt System.out.println (null), nhưng nó butstring.compareTo (null)sẽ không hoạt động. Vì vậy, hãy luôn chỉ ra trong nhận xét javadoc về các phương thức của bạn xem null có được chấp nhận làm tham số của chúng hay không, nếu điều đó không hoàn toàn rõ ràng.

  4. Trong JDK từ phiên bản 1.1 đến 1.1.5, việc chuyển null dưới dạng đối số theo nghĩa đen cho hàm tạo của lớp bên trong ẩn danh (ví dụ: new SomeClass(null) { ...}gây ra lỗi trình biên dịch. Tuy nhiên, bạn có thể chuyển một biểu thức có giá trị null hoặc chuyển một giá trị bắt buộc null, ở dạngnew SomeClass((String) null) { ...}

  5. Có ít nhất ba trường hợp khác nhau, thường được biểu thị bằng null:

    • Chưa được khởi tạo (không khởi tạo). Một biến hoặc vị trí chưa được gán bất kỳ giá trị nào.

    • Không tồn tại/không áp dụng được . Ví dụ: các nút cuối của cây nhị phân có thể được gọi là các nút thông thường có con rỗng.

    • Trống rỗng (sự trống rỗng của một cái gì đó). Ví dụ: bạn có thể sử dụng null để biểu thị một cây trống. Lưu ý rằng điều này khá khác so với trường hợp trước (chúng thường bị nhầm lẫn trong thực tế). Sự khác biệt là liệu null có phải là nút cây có thể chấp nhận được hay không hay null có nghĩa là giá trị không cần phải được coi là nút cây.

    So sánh ba cách triển khai nút cây nhị phân với các phương thức đầu ra của bảng điều khiển tuần tự:


  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() { }
    }
Tác giả câu trả lời: Peter Norvig, nhà khoa học người Mỹ trong lĩnh vực trí tuệ nhân tạo, giám đốc nghiên cứu tại Google
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION