java关于Random类的doubles方法的返回值为什么这样呢?

public class RadomDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Random rd=new Random();
        System.out.println(rd.nextInt());
        System.out.println(rd.nextInt());
        System.out.println("result is:"+rd.nextDouble());
        System.out.println(rd.doubles());
    }

}

运行结果:

-823092565
-1416900502
result is:0.010750369831312945
java.util.stream.DoublePipeline$Head@62ee68d8

这是 调用了 Object类的 toString方法,打印了 类名 和 其 hashcode

img

img

img

img

rd.doubles()返回的是stream对象,没有实现toString,输出的是对象hash

  • 这篇博客: java基础-Random的随机数的使用中的 Random的使用注意事项 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Random产生随机数有两种方式,一种不带种子,一种是带种子的
    有下面这样一段代码,定义两个随机数,设定相同的种子,返回100以内的随机整数,两个Random产生的随机数顺序是一样的。

    Random random = new Random(100);
    Random random1 = new Random(100);
    
    //随机生成5个int数字  next()
    System.out.println("随机生成5个int数字  next()");
    for (int n = 0; n < 5; n++) {
        System.out.println(random.nextInt(100)+" "+random1.nextInt(100));
    }
    
    输出的结果如下:
    15,15
    50,50
    74,74
    88,88
    91,91
    

    Random的随机数其实伪随机数,只要种子确定,那么生成的随机数顺序是一致的,所以避免例子中两个Random实例产生了顺序一致的随机数。一般有两种方式

    • 生成Random实例的时候不指定种子。
    • 生成一个单例的Random类,然后生成随机数。