import java.util.*;
public class ArrayNew{
public static void main(String[] args){
int[] a;
Random rand=new Random(47);
a=new int[rand.nextInt(20)];
System.out.println("length of a="+a.length);
System.out.println(Arrays.toString(a));
}
}输出是什么?为什么?

解决方案 »

  1.   

    Random rand=new Random(47); 
    关键是这里
      

  2.   

    new Random(47); 
    的缘故....new Random(); 
    就没问题了.....LZ还是去看看API吧
      

  3.   

    输出的是:
    length of a=18
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    首先你创建Random对象的时候,指定了一个种子,如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。所以,无论你运行多少次,你得到的序列是一样的,也就是说,你用nextInt()方法取到的值是一样的。这个值就是18,你将18作为了数组a的长度,所以第一个语句输出的是18,java会对数组进行默认的初始化,对int的数据初始化值为0。所以第二个语句输出的就是元素为0长度为18的数组的字符串表示形式。[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
      

  4.   

    数组a的长度是随机的,而且a中的元素没有做初始化,由于数组存放的是int型的数据,而int型数据java的基本类型,所以即使没有初始化,也会赋给默认值,int型的默认值是“0”,所以a里面存放的是都是“0”。
    综上,程序的数据结果为:
    length of a=【一个伪随机数】
    [0,...,0]//0的个数和a的长度一致。