java数组的默认初始化_Java中数组的默认初始化是什么?

问题

所以我正在声明并初始化一个int数组:

static final int UN = 0;

int[] arr = new int[size];

for (int i = 0; i < size; i++) {

arr[i] = UN;

}

说我这样做......

int[] arr = new int[5];

System.out.println(arr[0]);

... 0将打印到标准输出。另外,如果我这样做:

static final int UN = 0;

int[] arr = new int[5];

System.out.println(arr[0]==UN);

... true将打印到标准输出。那么Java默认情况下如何初始化我的数组呢?是否可以安全地假设默认初始化将数组索引设置为0,这意味着我不必遍历数组并初始化它?

谢谢。

#1 热门回答(231 赞)

Java程序中未被程序员明确设置为某些内容的所有内容都被初始化为零值。

对于引用(包含对象的任何东西)为null。

对于int / short / byte / long,为0。

对于浮点数/双精度值为0.0

对于虚假的布尔值。

对于空字符'\ u0000'(其十进制等效值为0)的char。

创建某个数组时,所有条目也都归零。因此,你的数组在由new创建后立即包含五个零。

注意(基于注释):在分配局部变量时,Java虚拟机不需要将底层内存清零(如果需要,这允许有效的堆栈操作),因此为了避免随机值,Java语言规范要求初始化局部变量。

#2 热门回答(49 赞)

每个类变量,实例变量或数组组件在创建时都会使用默认值进行初始化(第15.9节,第15.10节):对于类型字节,默认值为零,即(byte)0的值。对于short类型,默认值为零,即(short)0的值。对于int类型,默认值为零,即0.对于long类型,默认值为零,即0L。对于float类型,默认值为正零,即0.0f。对于double类型,默认值为正零,即0.0d。对于char类型,默认值为空字符,即'\ u0000'。对于boolean类型,默认值为false。对于所有引用类型(第4.3节),默认值为null。

#3 热门回答(16 赞)

JLS明确地说

数组初始值设定项创建数组并为其所有组件提供初始值。

这与数组是实例变量还是局部变量或类变量无关。

基元类型的默认值:docs

对于对象,默认值为null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值