You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Arrays.deepEquals和deepToString支持多维基本类型数组却不支持一维?

关于Arrays.deepEquals与Arrays.deepToString的参数兼容问题

从方法签名可知,Arrays.deepEquals(Object[] arr1, Object[] arr2) 和 Arrays.deepToString(Object[]) 方法接受Object[]类型参数,但它们能完美支持int[][]、float[][]等多维基本类型数组,却对int[]、float[]等一维基本类型数组报错。

示例1:deepEquals支持多维数组

int[][] arr = new int[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
int[][] arr1 = new int[2][3];
arr1[0][0] = 1;
arr1[0][1] = 2;
arr1[0][2] = 3;
arr1[1][0] = 4;
arr1[1][1] = 5;
arr1[1][2] = 6;

System.out.println(Arrays.deepEquals(arr, arr1));

// Output: true

示例2:deepEquals不支持一维数组

int[] arr = {1,2,3,4,5};
int[] arr1 = {1,2,3,4,5};
System.out.println(Arrays.deepEquals(arr, arr1)); // Error
/* 错误提示:"The method deepEquals(Object[], Object[]) in the type Arrays is not applicable for the arguments (int[], int[])" */

Arrays.deepToString存在同样问题

示例3:deepToString支持多维数组

int[][] arr = new int[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;

System.out.println(Arrays.deepToString(arr));

// Output: [[1, 3, 0], [4, 5, 6]]

示例4:deepToString不支持一维数组

int[] arr = {1,2,3,4,5};
System.out.println(Arrays.deepToString(arr)); // Error
// 错误提示:"The method deepToString(Object[]) in the type Arrays is not applicable for the arguments (int[])"

补充Java子类型规则以辅助理解

  • Java中的子类型:子类型是面向对象编程语言的关键特性,若S继承或实现T,则S是T的子类型,且子类型具有传递性。例如String是Object的子类型,但int等基本类型不是任何引用类型的子类型。
  • 数组类型的子类型规则:
    • 若S和T均为引用类型,则S[]是T[]的直接子类型当且仅当S是T的直接子类型;
    • Object、Cloneable、java.io.Serializable是Object[]的直接超类型;
    • 若P是基本类型,则Object、Cloneable、java.io.Serializable是P[]的直接超类型;
  • 数组类型的直接超类是Object;
  • 所有数组类型都实现Cloneable和java.io.Serializable接口;
  • Java中数组是对象,可赋值给Object类型变量,可调用Object类的所有方法;
  • 对象指类实例或数组;
  • 引用值是指向对象的指针,还有特殊的null引用;
  • 类实例通过类实例创建表达式显式创建;
  • 数组通过数组创建表达式显式创建。

内容的提问来源于stack exchange,提问作者Anand Pandey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:23:11