【发布时间】:2015-08-19 16:00:10
【问题描述】:
++frequency[2] ;
我以为没有初始化的数组的默认值是0。
Imo,这意味着评估
frequency[2] 为零,然后将其加 1 并将其分配给索引 2。
请任何人解释如何获得此代码的输出。在这件事上我真的很难受。
public static void main(String ars[])
{
int responses[] = {1,2,4,4};
int freq[] = new int[5];
for(int answer = 1;answer < responses.length;answer++){
++freq[responses[answer]];
}
for ( int rating = 1; rating < freq.length; rating++ )
System.out.printf( "%6d%10d\n", rating, freq[ rating ] );
//输出
1 0
2 1
3 0
4 2
【问题讨论】:
-
那么,你试试会发生什么?
-
如果你相信Wikipedia,它会说,Java 没有未初始化的变量。没有显式初始化程序的类和对象的字段以及数组元素会自动使用其类型的默认值进行初始化(布尔值为 false,所有数值类型为 0,所有引用类型为 null)。 Java中的局部变量在被访问之前必须明确赋值,否则就是编译错误。