找到了初始化书中对象的第二种方法。现在很困惑。

最佳答案

这声明了一个变量:

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

10-07 18:46