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