在书中找到了初始化对象的第二种方法。现在很困惑。
发布于 2016-03-08 15:00:01
这声明了一个变量:
Car myCar;该变量的类型为Car,称为myCar。然而,它还没有初始化为任何东西。它是Car对象的占位符,但是没有这样的对象放置在那里。所以它的值是null。
这将声明并初始化一个实例:
Car myCar = new Car();您可以从逻辑上将其看作是以下两个语句的一个部分:
Car myCar;
myCar = new Car();声明并创建变量,将其设置为占位符,并在其中放置Car实例。
编辑:更具体地说(我刚才在这里学到了一些东西),如果它是类级成员,则值是null。例如:
class MyClass {
Car myCar;
void someMethod() {
// myCar is "null" here
}
}但是,如果它是方法中的局部变量,则略有不同:
class MyClass {
void someMethod() {
Car myCar;
// myCar is "uninitialized" here.
}
}区别主要是语义上的,你不应该担心它,除非你有错误或者正在做一些奇怪的事情。编译器会告诉您是否要使用“未初始化”变量,因为在初始化之前不能使用它。但是可以使用null变量,它的值只是null。
发布于 2016-03-08 14:59:27
第一个语句定义一个变量,并通过构造一个新的Car实例为其赋值。第二个简单定义一个变量,而不分配一个值;
发布于 2016-03-08 14:59:28
Car myCar; --它不初始化对象,只需声明它。
在语句Car myCar中,如果myCar是instance变量,则myCar的值为null。它没有指向内存中的任何对象。您可以在第一次使用变量之前声明该变量并将其初始化,否则它将抛出一个NullPointerException。
在语句Car myCar = new Car();中,内存中有一个名为myCar (类Car )的对象。
声明:声明声明了变量的类型以及它的名称。变量只能声明一次。编译器使用它来帮助程序员避免错误,例如将字符串值赋值给整数变量。在读取或赋值变量之前,必须声明该变量。
https://stackoverflow.com/questions/35870663
复制相似问题