C类之间的区别;和Class c = new Class();

时间:2019-03-05 11:31:10

标签: java object reference instance instance-variables

据我所知Class c = new Class();创建了Class的新实例,那么我们可以使用此类的方法和变量等。然后我可以在没有Class c;的情况下使用=new Class();声明做什么。我也看到了这样的例子 类c = b.something(); ,类别c = a;即,将另一种类类型分配给类c。当我们将一个类分配给另一个类时会发生什么情况。

6 个答案:

答案 0 :(得分:3)

没有分配对变量的引用(无论是new创建的变量,还是已有的引用说方法返回给您),您什么都做不了(很有效率,您当然可以使用这些null来使编译器向您抛出错误消息,或者更糟的是,在运行时遇到异常)。

与任何Whatever theThing;一样,它只是一个声明。它告诉编译器,应该使用一个变量来保存对给定类型的引用。但是起初,这只是null

答案 1 :(得分:2)

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

答案 2 :(得分:2)

有一些定义。

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

如果是声明(来自specification):

  

...在实际创建并分配对象之前,其值将一直不确定。仅声明引用变量不会创建对象。为此,您需要使用下一节中所述的new运算符。您必须先在变量中分配对象,然后才能在代码中使用它。否则,将出现编译器错误。

答案 3 :(得分:1)

Class c;指一类的instance

在未分配的情况下,它设置为null。带有分配的设置为新的instance

通过不分配它,您可以先声明它,然后再分配它。

好处

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

答案 4 :(得分:1)

假设您要去一家咖啡店喝杯咖啡。打开咖啡机后,会将热咖啡倒入杯中。如果未正确放置杯子,则将无法按照您想要的方式来喝咖啡,如果机器未启动,则杯子将不会有咖啡。

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;将会是一个空杯子(没有任何咖啡),其定义为null,而new Coffee();是一种准备好的咖啡,它不会存储在任何地方,它可以漂浮在地板,桌子或桌子上。

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

答案 5 :(得分:1)

从类创建对象时分三个步骤

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

例如:Animal cat;

实例-这是将内存分配给对象的时间。这是通过 new 运算符完成的。 初始化- new 运算符后跟该对象的 constructor ,以将值存储在分配的内存中; < / p>

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

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

我希望这会有所帮助。