读书人

一小段代码的疑问(谢谢)

发布时间: 2012-03-22 17:43:57 作者: rapoo

一小段代码的疑问(多谢)
{
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++) {
....
}
效果一样

读书人网 >J2SE开发

热点推荐