我知道Class c = new Class();
创建了Class的新实例,然后我们可以使用这个Class方法和变量等。那么如果没有Class c;
赋值,我可以用=new Class();
声明做什么。我也看到了类似C = b.something()的例子; ,等级c = a;也就是说,另一个类类型被分配给C类。当我们将一个Class分配给另一个Class时会发生什么。
如果没有为你的变量分配一个引用(无论是一个new
ly创建的那个,还是一个现有的引用都说一个方法返回给你),你什么都不做(生产效率,当然可以使用这样的null来让编译器抛出错误)消息,或者更糟糕的是,在运行时遇到异常)。
像任何Whatever theThing;
只是一个声明。它告诉编译器有一个变量应该用于保存对给定类型的引用。但最初,那件事只是null
。
如果没有初始化变量,Class c
将为null。
有一些定义。
Class c = new Class();
- 初始化
Class c;
- 声明
如果是声明(来自specification):
...在实际创建并分配对象之前,其值将不确定。简单地声明引用变量不会创建对象。为此,您需要使用new运算符,如下一节所述。在代码中使用该对象之前,必须将该对象分配给该变量。否则,您将收到编译器错误。
假设你去一家咖啡馆,在那里你可以喝一杯咖啡。打开电源时,将热咖啡倒入杯中。如果没有正确放置杯子,咖啡将无法以您想要的方式提供,如果机器未启动,杯子将不会有咖啡。
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
Class c;
指的是一个类的instance
。
没有赋值,它被设置为null
。赋值是设置为新的instance
。
通过不分配,您可以先声明它,然后再分配它。
从类创建对象时有三个步骤
声明 - 具有变量名称且具有对象类型的变量声明,这是当您向程序声明将存在动物名称cat的对象类型时。
例如:Animal cat;
实例化 - 这是将内存分配给对象的时间。它是使用new运算符完成的。初始化 - 新运算符后跟该对象的构造函数,以在已分配的内存上存储值;
这是在同一行上实例化和初始化的示例。
例如:Animal cat = new Animal(Kitty);
我希望这有帮助。