【发布时间】:2016-03-08 14:55:44
【问题描述】:
在书中找到了第二种初始化对象的方法。现在很迷茫。
【问题讨论】:
标签: java class oop initialization
在书中找到了第二种初始化对象的方法。现在很迷茫。
【问题讨论】:
标签: java class oop initialization
这声明了一个变量:
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。
【讨论】:
null。它未初始化。
第一条语句定义了一个变量,并通过构造一个新的 Car 实例为其赋值。第二个只是简单地定义了一个变量而不给它分配一个值;
【讨论】:
Car myCar;这不会初始化对象,只是声明它。
在声明中Car myCar;如果 myCar 是 instance 变量,则 myCar 的值为 null。它没有指向内存中的任何对象。您可以在第一次使用它之前声明变量并初始化它,否则它会抛出一个NullPointerException。
在语句Car myCar = new Car();中,有一个对象在内存中创建,名称为myCar,属于Car类。
声明:声明说明变量的类型及其名称。一个变量只能声明一次。编译器使用它来帮助程序员避免错误,例如将字符串值分配给整数变量。在读取或分配变量之前,必须先声明该变量。
【讨论】:
Car myCar; 如果这是一个局部变量,myCar 不是null;它未初始化。