' Car myCar = new Car();'之间的区别是什么?和“汽车myCar”'?

时间:2016-03-08 14:55:44

标签: java class oop initialization

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

3 个答案:

答案 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中;如果myCarinstance变量,则myCar的值为null。它没有指向内存中的任何对象。你可以在第一次使用它之前声明变量并使其初始化,否则会抛出NullPointerException

在语句Car myCar = new Car();中,在内存中按类myCar的名称Car创建了一个对象。

声明:声明声明变量的类型及其名称。变量只能声明一次。编译器使用它来帮助程序员避免错误,例如将字符串值分配给整数变量。在读取或分配变量之前,必须声明该变量。

See this