【问题标题】:int [] (integer array) and object class relation in Javaint [](整数数组)与Java中的对象类关系
【发布时间】:2021-06-06 01:12:34
【问题描述】:

我知道 Object 类是 Java 中所有类的根类, 我想知道 int[] 和 Object 类之间的关系。

Arrays.stream() 可以接受 int[]、long[]、double[] 和 Object[] 的 arg。

当我遇到将 int[] 赋予泛型类型 (Stream<int[]>) 的代码时,此代码有效,我们只为 Stream 提供类。

此代码的输出也是十六进制代码而不是整数

        int arr[] = { 1, 2, 3, 4, 5 }; 

        // --------- Using Arrays.stream() --------- 

        // to convert int array into Stream 
        IntStream intStream = Arrays.stream(arr); 

        // Displaying elements in Stream 
        intStream.forEach(str -> System.out.print(str + " ")); // {1,2,3,4,5]

        // --------- Using Stream.of() --------- 

        // to convert int array into Stream 
        Stream<int[]> stream = Stream.of(arr); 

        // Displaying elements in Stream 
        stream.forEach(str -> System.out.print(str + " ")); // I@asdf

【问题讨论】:

  • 你有什么问题?您要修复的错误是什么?预期的输出是多少?
  • 标题的答案可以在JLS 10. Arrays 中找到。第一句话:“在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以赋值给Object类型的变量(§4.3.2)。Object类的所有方法都可以是在数组上调用。”
  • @user15244370 非常感谢,正在寻找这个
  • 只是为了乐趣 System.out.println(arr.getClass()) or Object obj = arr; int[] casted = (int[]) obj;
  • syso(arr.getClass()) // "[I" 有意义 toString() 是 Classname@hexcode

标签: java generics java-stream


【解决方案1】:

intStream.forEach(str -&gt; System.out.print(str + " ")); 中,每个str 的类型都是int。但是在stream.forEach(str -&gt; System.out.print(str + " ")); 中,每个str 都是int[] 类型。因此输出的差异。

要打印原始数组,您需要使用Arrays.toString,例如:

stream.forEach(str -> System.out.print(Arrays.toString(str) + "\n"));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2018-07-16
  • 2014-09-03
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
相关资源
最近更新 更多