在Java中创建类的数组时,分三个步骤:声明,实例化和初始化。 但是在创建原始数据类型数组时, new 关键字会实例化还是初始化?
我发现它令人困惑,因为在许多地方,实例化一词仅用于一个或多个类的数组。因此,我想知道实例化步骤是否也用于 PRIMITIVE 数据类型的数组。或者,是整个数组初始化语句如下所示。
{{1}}
答案 0 :(得分:2)
是否可以实例化原始数据类型的数组?
是的
new
中的new int[20]
关键字是否实例化或初始化?
在该示例中,它既实例化原始数组,又将其 1 初始化为默认值基本类型;即原始数字类型的数组为零,false
的数组为boolean
。
另一方面:
int intArray[];
是声明一个数组变量,而不是初始化变量或实例化数组。如果这是局部变量声明,则在分配给变量之前,编译器将不允许您使用该变量。如果是字段,则该变量将默认初始化为null
;即没有实例化数组。
Java不允许程序访问未初始化的变量或数组元素,无论是显式的还是通过 default 初始化的。这是该语言的基本属性。
1-正确的术语是初始化而不是初始化。发起(英语)是指“开始”(例如,一个动作或过程)或“(通常)通过某种仪式使(某人)进入秘密或晦涩的社会或团体”。在这种情况下,它没有任何意义。
答案 1 :(得分:0)
在Java中,当我们实例化图元数组(如new int[10]
)时,将使用该图元的默认值初始化数组中的项目。 (int
的默认值为0
,boolean
的默认值为false
等)
当我们实例化一个对象数组(例如String
数组)时,该数组中的项目会使用null
进行初始化。
请参阅以下程序及其输出。
public class PrimitiveArray
{
public static void main(String[] args)
{
int[] intArray = new int[10];
boolean[] booleanArray = new boolean[10];
String[] stringArray = new String[10];
System.out.println("intArray[3] = " + intArray[3]);
System.out.println("booleanArray[3] = " + booleanArray[3]);
System.out.println("stringArray[3] = " + stringArray[3]);
}
}
输出为:
intArray[3] = 0
booleanArray[3] = false
stringArray[3] = null