日期:2014-05-20  浏览次数:20687 次

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