就初始/默认/未初始化值而言...
...数组对象是否已初始化(在类和本地级别)?
在一些 SCJP 笔记中阅读它:
无论数组是声明为实例还是局部变量,数组元素都会被赋予其默认值。
但是,如果在本地声明数组“对象”,则不会对其进行初始化。
就初始/默认/未初始化值而言...
...数组对象是否已初始化(在类和本地级别)?
在一些 SCJP 笔记中阅读它:
无论数组是声明为实例还是局部变量,数组元素都会被赋予其默认值。
但是,如果在本地声明数组“对象”,则不会对其进行初始化。
作为引用类型的类成员的初始值为 null。
作为引用类型的局部变量被认为是单元化的,需要明确分配 null 或其他内容,否则代码将无法编译。
尝试测试这个例子,看看会发生什么:
class Test {
private Object[] member;
public void foo() {
member.toString(); // NullPointerException
Object[] local;
local.toString(); // won't compile: The local variable local may not have been initialized
}
}
对象数组遵循相同的规则,因为它们本身就是引用。
现在,这是针对数组本身的。在谈到array 的实际元素时,无论您在哪里声明它们,它们默认为 null:
class Test {
private Object[] member = new Object[10];
public void foo() {
member[0].toString(); // NullPointerException
Object[] local = new Object[10];
local[0].toString(); // NullPointerException
}
}
未初始化的对象总是null
.
Object[] myArray;
//myArray == null
myArray = new Object[1];
//myArray[0] == null
声明为字段的数组初始化为 null,就像每个非原始实例变量一样。声明为局部变量的数组未初始化,与其他所有局部变量一样。
一旦初始化为一个新数组,它们的每个元素都包含 null。
1.In JAVA local variable have to intitialized before using it.
2. String s[] = new String[2];
Here s[0] and s[1] both contains NULL value and initialize s[0] and s[1] as:
s[0] = new String();
s[1] = new String();