【问题标题】:Difference between Class c; and Class c=new Class(); [closed]c类之间的区别;和类 c=new Class(); [关闭]
【发布时间】:2019-07-26 20:41:35
【问题描述】:

据我所知,Class c = new Class(); 创建了新的 Class 实例,然后我们可以使用这个 Class 方法和变量等。然后我可以用 Class c; 声明来做什么,而没有 =new Class(); 赋值。我也看到了这样的例子 类 c= b.something(); , 类 c=a;也就是说,另一个类类型被分配给类 c。当我们将一个类分配给另一个类时会发生什么。

【问题讨论】:

  • Class c 只是一个参考,没有初始化你真的不能用它做任何事情。
  • 不要将类与对象和/或实例混淆
  • 如果你没有初始化一个字段Class c,它将被初始化为null。如果你不初始化一个局部变量Class c,Java 会在你读取它的值之前强制你初始化它。
  • 这个问题缺乏研究,没有增加价值

标签: java object reference instance instance-variables


【解决方案1】:

如果没有初始化变量,Class c 将为空。

【讨论】:

  • 如果是局部变量,则未初始化,初始化前的每次读取都会导致编译错误。
【解决方案2】:

Class c; 指的是一个类的instance

如果没有赋值,则设置为null。 With assignment 设置为新的instance

不赋值,可以先声明,以后再赋值。

好处

  • 如果初始化需要很长时间,您可以延迟它。
  • 它可能取决于其他资源。
  • 多个项目的声明顺序不必与它们的创建顺序相同。
  • 可以按需创建实例,使用工厂方法获取;只有在使用时才会创建它。

【讨论】:

  • 如果是局部变量,则未初始化,初始化前的每次读取都会导致编译错误。
  • 先生。史蒂文·斯彭金!你的答案很容易理解,因为简单的英语,简短而深刻!谢谢
【解决方案3】:

有几个定义。

Class c = new Class(); - 初始化
Class c; - 声明

如果是声明(来自specification):

...在实际创建对象并将其分配给它之前,它的值将是不确定的。简单地声明一个引用变量并不会创建一个对象。为此,您需要使用 new 运算符,如下一节所述。在代码中使用它之前,您必须将一个对象分配给该变量。否则会出现编译错误。

【讨论】:

    【解决方案4】:

    如果不分配对变量的引用(无论是newly 创建的变量,还是某个表示方法返回给您的现有引用),您什么也做不了(高效,您当然可以使用这样的空值让编译器向您抛出错误消息,或者更糟糕的是,在运行时遇到异常)。

    像任何Whatever theThing; 一样只是一个声明。它告诉编译器有一个变量应该用来保存对给定类型的引用。但最初,那个东西只是null

    【讨论】:

      【解决方案5】:

      假设你去一家咖啡店,你会在杯子里买一杯咖啡。机器开机后会将热咖啡倒入杯中。如果杯子放置不正确,咖啡将无法以您想要的方式提供,如果机器未启动,杯子将不会有任何咖啡。

      Coffee cup;  // is your cup to hold coffee
      
      new Coffee();  // is when the machine gives you a coffee object
      

      所以Coffee cup = new Coffee(); 表示咖啡对象已创建并且在cup 中可用,这是一个参考。

      现在Coffee cup; 将只是一个空杯子(没有任何咖啡),它被定义为nullnew Coffee(); 是一种未存放在任何地方的预制咖啡,它可以漂浮在地板或桌子或桌子上.

      参考:Calling methods on reference variable vs Calling methods on a new object

      【讨论】:

      • 详细解释!但是很好!
      • @infocatalyst 只是想让这个想法即使对于初学者来说也很清楚
      • 我喜欢这个解释,is a prepared coffee which is not stored anywhere, it can be floating either on floor or desk or table.,但如果你能用堆栈和堆来解释它,那么它对未来的跟踪者会有好处。
      【解决方案6】:

      从类中创建对象的三个步骤

      Declaration - 具有对象类型的变量名的变量声明 这是当您向程序声明将有一个动物名称 cat 的对象类型时。

      例如:Animal cat;

      实例化 - 这是为对象分配内存的时候。它是使用 new 运算符完成的。 初始化- new 运算符后跟该对象的构造函数,以将值存储在分配的内存中;

      这是在同一行上实例化和初始化的示例。

      例如:Animal cat = new Animal(Kitty);

      我希望这会有所帮助。

      【讨论】:

      • 第三步在哪里?
      • 它在实例下面,不是粗体,所以它是不可见的
      猜你喜欢
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 2010-11-30
      相关资源
      最近更新 更多