【问题标题】:Object ob; and Object ob = new Object; [closed]对象ob;和对象 ob = 新对象; [关闭]
【发布时间】:2014-02-24 08:55:09
【问题描述】:

请解释一下这两者有什么区别:

1) Object ob;

2)Object ob = new Object();

【问题讨论】:

  • 盘子和盘子里的食物
  • 另请阅读:javaranch.com/campfire/StoryPassBy.jsp,相当不错。
  • @GrijeshChauhan 我真的很喜欢这个类比。我会赞成将其作为答案。
  • Object ob;中,ob是一个可以持有Object类对象引用的变量。在 Java 中,您实际上使用 new 关键字动态创建了一个类的实例。所以在第二个声明中你分配ob Object 类实例的引用,现在你可以在第二个声明后访问对象的方法和属性,例如ob.methodname()(虽然在第一次声明之后你不能。ob首先只是一个不引用实际对象的变量)

标签: java object


【解决方案1】:

在第一种情况下,您只是声明了一个对象,如果它是一个实例变量,它将被初始化为 null。在第二种情况下,您正在创建一个“空”Object 实例,它不会将== 设置为 null,因此不是同一件事。通常,将对象留给隐式初始化并不是一个好主意,您应该显式地初始化一些东西(即使它是空的)。

【讨论】:

    【解决方案2】:

    首先是声明对象:

    Object ob;
    

    请注意,声明不会实例化对象。声明对象时,其值最初设置为 null。

    其次是声明和实例化的对象:

    Object ob = new Object();
    

    在这种情况下,您将通过构造方法初始化 Object 类型的新对象。

    您可以获取here 的快速信息。你还可以在各种java教程中获得很多信息。

    【讨论】:

      【解决方案3】:

      第一个创建一个变量来保存对对象的引用。默认初始化为null。

      第二个创建该变量,并将其初始化为指向一个新创建的对象。虽然实际上你不能创建 Object 的实例,但我希望你知道,因为 Object 是抽象的。

      我最近一直在说这个,我承认我有偏见,但是IBM's DeveloperWorks Java website 有一些很好的教程。

      【讨论】:

        【解决方案4】:

        1) 只是Object 变量的声明;
        隐式设置为null

        2) 是Object 变量的声明以及
        它的显式初始化;初始化完成
        通过调用Object 默认构造函数

        【讨论】:

          猜你喜欢
          • 2021-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-21
          • 1970-01-01
          • 2010-10-04
          • 2014-06-06
          相关资源
          最近更新 更多