You need to enable JavaScript to run this app. Java中int[]与Object类的关系及Stream.of输出哈希值问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Java中int[]与Object类的关系及Stream.of输出哈希值问题咨询

int[]与Object类的从属关系
  • Java中所有数组类型,无论存储的是基本类型数据还是引用类型数据,都是直接继承自Object的引用类型,属于JVM定义的合法类类型。
  • 泛型规则仅限制基本数据类型(如原生的int、long)不能作为类型参数,所有引用类型(包括int[]这类数组类型)都可以正常作为泛型的类型参数。因此Stream<int[]>完全符合语法要求,和“Stream仅接收类类型作为泛型参数”的规则没有冲突。
两段代码的行为差异说明
  • Arrays.stream()做了针对基本类型数组的重载适配:当传入int[]参数时,会直接匹配返回IntStream的重载方法,流内的元素是数组拆分后的每一个int值,因此遍历输出时会依次打印1 2 3 4 5。
  • Stream.of()是通用泛型方法,没有针对基本类型数组做拆包处理:方法逻辑是把传入的整个实参作为流的单个元素,泛型推导时会将整个int[]作为类型T,最终生成Stream<int[]>,流中仅包含arr这个数组对象本身,没有拆分出数组内部的元素。
  • 输出十六进制哈希值的原因:Java的数组类型没有重写Object的toString()方法,当把数组对象传入System.out.print()时,会默认使用Object类的toString实现,输出格式为“类型标识@无符号十六进制哈希值”——int数组的类型标识为I,因此会出现I@asdf这类输出,本质是打印了整个数组对象的默认字符串表示,没有遍历内部元素。

内容的提问来源于stack exchange,提问作者Jon B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 07:54:05