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。
对于原始类型,这是0
或false
,和引用类型,默认值是null
。所以是的,你需要像上一个代码示例那样初始化每个元素,使用new
,否则将会是null
。
答
private Piece positions[][]=new Piece[8][8];
这会初始化8x8 Piece
引用的数组,而不是包含的元素。该阵列将是null-initialized
,实际上每个单元格将包含null
。