一小段代码的疑问(多谢)
{
static int[] values = new int[10];
static
{
System.out.println( "Running initialization block... ");
for(int i = 0; i < values.length; i++)
{
values[i] = (int)(100.0*Math.random());
}
}
static void listValues()
{
System.out.println();
for(int value : values)
{
System.out.print( " " + values);
}
System.out.println();
}
public static void main(String[] args)
{
System.out.println( "\nFirst object: ");
TryInitialization.listValues();
System.out.println( "\nSecond object: ");
TryInitialization.listValues();
}
}
疑问:
1、为什么运行结果,没有生成随机数,而显示如下:
[cashlu@cashlu-desktop Desktop] $ java TryInitialization
Running initialization block...
First object:
[I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f
Second object:
[I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f [I@19821f
2、for(int value : values)这个语句是什么意思?
------解决方案--------------------System.out.print( " " + values);
写错了。
应该是value。
------解决方案--------------------for(int value : values)
JDK 1.5 后增加的新特性,for ... in 循环(也称增强的循环),后面的参数是指一个数组或一个集合,而前面的参数是后面参数中所存放的众多元素的类型,这个变量也可以近似地看作是这个数组中的一个元素,例如:
int[5] nums = new int[]{1,2,3,4,5};
for(int n : nums) {
System.out.println(n);
}
就会遍历输出这个数组,与
for(int i = 0; i < nums.length; i++){
System.out.println(nums[i]);
}
的效果是一样的。
------解决方案--------------------for(int value : values) {
...
}
就是取values里面每一个值到value
和
for (int i=0; i <values.length; i++) {
....
}
效果一样