Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java基本数据类型的二维数组_Java - Fatal编程技术网

Java基本数据类型的二维数组

Java基本数据类型的二维数组,java,Java,基本数据类型的二维数组能否包含不同类型的元素?我读过一些文章,认为它既可以,也不能。基本类型的二维数组,如int从技术上讲,不仅仅是基本类型。外部数组包含一个int[]数组数组,这些数组实际上是对象s-不是基本类型(int[]是对象的子类型) 这意味着int[][]数组可以包含null,而内部int[]数组只能包含基元ints。但是,int[]]数组不能包含除int[]以外的任何类型的元素 演示 此代码编译和执行时没有异常: int[][] a = {{1, 2, 3}, {4, 5, 6},

基本数据类型的二维数组能否包含不同类型的元素?我读过一些文章,认为它既可以,也不能。

基本类型的二维数组,如
int
从技术上讲,不仅仅是基本类型。外部数组包含一个
int[]
数组数组,这些数组实际上是
对象
s-不是基本类型(
int[]
对象
的子类型)

这意味着
int[][]
数组可以包含
null
,而内部
int[]
数组只能包含基元
int
s。但是,
int[]]
数组不能包含除
int[]
以外的任何类型的元素

演示

此代码编译和执行时没有异常:

int[][] a = {{1, 2, 3}, {4, 5, 6}, null};
System.out.println(Arrays.deepToString(a));
Object b = a;
System.out.println(Arrays.deepToString((int[][]) b));
int[][] c = a;
System.out.println(Arrays.deepToString(c));
int[] d = a[1];
System.out.println(Arrays.toString(d));
Object e = d;
System.out.println(Arrays.toString((int[]) e));
int[] f = a[2];
System.out.println(Arrays.toString(f));
并将输出:

[[1, 2, 3], [4, 5, 6], null]
[[1, 2, 3], [4, 5, 6], null]
[[1, 2, 3], [4, 5, 6], null]
[4, 5, 6]
[4, 5, 6]
null

作为对Nem评论的回应,我建议您使用一个通用接口的2d数组,这样容器(2d数组)就可以容纳不同的类型。当另一个程序员看到该接口的数组而不是对象数组时,它会更有意义。还使用“instanceof”操作符检查所述接口的具体实现

如果需要,我可以提供一个例子

基本数据类型的二维数组能否包含不同类型的元素?我读过一些文章,认为它既可以也不能

int
数组为例:

int[] nums1;     //Array of integers
int[][] nums2;   //Array of (Array of integers)
int[][][] nums3; //Array of (Array of (Array of integers))
因此,如果您将2D数组视为一个包含行和列的表,那么如果您询问该表是否可以在不同的行中包含不同的数据类型,答案是否定的


但是由于多维数组仅仅是数组的数组,实际上,它们确实保存着不同类型的数据:一个保存着
int
另一个保存着
数组(对象)

不,java是强类型的。但是,
Object[]
可以在向阵列添加或从阵列中删除时对其进行类型转换吗?您可以提供一个指向示例文章的链接,建议它可以这样做吗?实际上,您可以将所有基元值存储在“最宽”类型i中。Elong和double使用位算法(当然,除了returnAddress)。@balalaika类型
int
的变量赋值似乎与类型
long
的引用兼容的唯一原因是因为Java将隐式地从较小的类型自动转换为较宽的类型,因为不存在数据丢失的可能性。我只是想澄清一下。