就初始/默认/未初始化的值而言...
...数组对象是否已初始化(在类和本地级别)?
在一些SCJP笔记中阅读:
无论是否,数组元素都会被赋予其默认值 数组被声明为实例或局部变量。
如果声明了数组“对象”,则不会对其进行初始化 本地。
答案 0 :(得分:3)
作为引用类型的类成员获得初始值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
}
}
对象数组遵循相同的规则,因为它们本身就是引用。
现在,这是阵列本身。在谈到数组的实际元素时,默认情况下它们为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
}
}
答案 1 :(得分:2)
未初始化的对象始终为null
。
Object[] myArray;
//myArray == null
myArray = new Object[1];
//myArray[0] == null
答案 2 :(得分:1)
声明为字段的数组初始化为null,就像每个非原始实例变量一样。声明为局部变量的数组未初始化,与其他每个局部变量一样。
一旦初始化为一个新数组,它们的每个元素都包含null。
答案 3 :(得分:1)
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();