找到了初始化书中对象的第二种方法。现在很困惑。
答案 0 :(得分:6)
这声明了一个变量:
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
。
答案 1 :(得分:1)
第一个语句定义一个变量,并通过构造一个新的Car实例为其赋值。第二个只是定义一个变量而不为它赋值;
答案 2 :(得分:1)
Car myCar;
这不会初始化对象,只是声明它。
在声明Car myCar
中;如果myCar
是instance
变量,则myCar的值为null。它没有指向内存中的任何对象。你可以在第一次使用它之前声明变量并使其初始化,否则会抛出NullPointerException
。
在语句Car myCar = new Car();
中,在内存中按类myCar
的名称Car
创建了一个对象。
声明:声明声明变量的类型及其名称。变量只能声明一次。编译器使用它来帮助程序员避免错误,例如将字符串值分配给整数变量。在读取或分配变量之前,必须声明该变量。