一、概述
我要声明并初始化一个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
这意味着我不必遍历数组并对其进行初始化?
二、详解
Java程序中所有未由程序员明确设置为某种东西的东西都被初始化为零值。
- 对于的引用(任何保存对象的对象)为
null
。 - 对于int / short / byte / long,它是一个
0
。 - 对于float / double,这是一个
0.0
- 对于布尔值,则为
false
。 - 对于char是空字符
'\u0000'
(其十进制等效值为0)。
当您创建某物的数组时,所有条目也会被清零。因此,您的数组在由创建后立即包含五个零。
注意(基于注释):分配局部变量时,不需要Java虚拟机将基础内存清零(如果需要,这可以进行有效的堆栈操作),因此为了避免随机值,Java语言规范要求初始化局部变量。
如若转载,请注明出处:https://www.javaidea.cn/article/8459.html