C类的区别;和C类=新的Class(); [关闭]

问题描述 投票:-1回答:6

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

java object reference instance instance-variables
6个回答
3
投票

如果没有为你的变量分配一个引用(无论是一个newly创建的那个,还是一个现有的引用都说一个方法返回给你),你什么都不做(生产效率,当然可以使用这样的null来让编译器抛出错误)消息,或者更糟糕的是,在运行时遇到异常)。

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


2
投票

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


2
投票

有一些定义。

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

如果是声明(来自specification):

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


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

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


1
投票

Class c;指的是一个类的instance

没有赋值,它被设置为null。赋值是设置为新的instance

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

Benefits

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

1
投票

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

声明 - 具有变量名称且具有对象类型的变量声明,这是当您向程序声明将存在动物名称cat的对象类型时。

例如:Animal cat;

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

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

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

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.