所以我要声明并初始化一个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这意味着我不必遍历数组并对其进行初始化?
谢谢。
问题来源于stack overflow
Java程序中未由程序员明确设置为所有内容的所有内容都初始化为零值。
对于的引用(任何包含对象的内容)null。 对于int / short / byte / long,它是一个0。 对于float / double,这是一个 0.0 对于布尔值,则为false。 对于char是空字符'\u0000'(其十进制等效值为0)。 当您创建某物的数组时,所有条目也会被清零。因此,您的数组在由创建后立即包含五个零new。
注意(基于注释):分配局部变量时,不需要Java虚拟机将基础内存清零(如果需要,这可以进行有效的堆栈操作),因此为了避免随机值,Java语言规范要求初始化局部变量。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。