Java如何处理初始化由对象组成的数组?

问题描述:

我正在学习java和我正在创建的特定应用程序,我正在初始化一个二维数组对象。初始化时占用数组的特定对象会在其no参数构造函数中更改多个变量。我想知道是否当声明数组时,java会初始化数组中所有元素中的每个变量:Java如何处理初始化由对象组成的数组?

private Piece positions[][]=new Piece[8][8]; 

或者是否有必要这样做?

for(int i=0;i<8;i++){ 
     for(int j=0;j<8;j++){ 
      Positions[i][j]=new Piece(); 

感谢您的帮助!

Java会将数组中元素的值初始化为数据类型的默认值。

JLS, Section 4.12.5,占地面积的默认值:

每个类变量,实例变量,或阵列组分与创建时的默认值初始化(§15.9,§15.10.2):

  • 对于字节类型,默认值为零,也就是(字节)0的值。

  • 对于short类型,默认值为零,即(short)的值为0。

  • 对于int类型,默认值是零,即,0

  • 对于类型长,默认值是零,即,0L。

  • 对于浮点类型,默认值为正零,即0.0f。

  • 对于double类型,默认值为正零,即0.0d。

  • 对于char类型,默认值为空字符,即'\ u0000'。

  • 对于布尔类型,默认值为false。

  • 对于所有的引用类型(§4.3),缺省值为null。

对于原始类型,这是0false,和引用类型,默认值是null。所以是的,你需要像上一个代码示例那样初始化每个元素,使用new,否则将会是null

private Piece positions[][]=new Piece[8][8]; 

这会初始化8x8 Piece引用的数组,而不是包含的元素。该阵列将是null-initialized,实际上每个单元格将包含null