可以实例化原始数据类型的数组吗?

时间:2019-01-07 13:22:43

标签: java arrays primitive abstract-data-type

在Java中创建类的数组时,分三个步骤:声明,实例化和初始化。 但是在创建原始数据类型数组时, new 关键字会实例化还是初始化?

我发现它令人困惑,因为在许多地方,实例化一词仅用于一个或多个类的数组。因此,我想知道实例化步骤是否也用于 PRIMITIVE 数据类型的数组。或者,是整个数组初始化语句如下所示。

{{1}}

2 个答案:

答案 0 :(得分:2)

  

是否可以实例化原始数据类型的数组?

是的

  

new中的new int[20]关键字是否实例化或初始化?

在该示例中,它既实例化原始数组,又将其 1 初始化为默认值基本类型;即原始数字类型的数组为零,false的数组为boolean

另一方面:

int intArray[];

是声明一个数组变量,而不是初始化变量或实例化数组。如果这是局部变量声明,则在分配给变量之前,编译器将不允许您使用该变量。如果是字段,则该变量将默认初始化为null;即没有实例化数组。

Java不允许程序访问未初始化的变量或数组元素,无论是显式的还是通过 default 初始化的。这是该语言的基本属性。


1-正确的术语是初始化而不是初始化。发起(英语)是指“开始”(例如,一个动作或过程)或“(通常)通过某种仪式使(某人)进入秘密或晦涩的社会或团体”。在这种情况下,它没有任何意义。

答案 1 :(得分:0)

在Java中,当我们实例化图元数组(如new int[10])时,将使用该图元的默认值初始化数组中的项目。 (int的默认值为0boolean的默认值为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