我最近与一位朋友讨论了Java中多维数组的声明。 它将涉及以下类型的数组:
int[][] array = new int[2][3];
到目前为止一直很好,但是我们其中一个人将这个数组视为2个数组,每个数组包含3个元素,另一个数组将其视为3个数组,每个数组包含2个元素。所以A人认为这是正确的声明:
int[][] array = new int[][]{{0,1,2},{3,4,5}};
而B人认为这是正确的声明:
int[][] array = new int[][]{{0,1},{2,3},{4,5}};
我们谁是正确的?那个人怎么能证明他是对的?
谢谢:)
答案 0 :(得分:2)
如果您运行此代码:
int[][] array = new int[2][3];
System.out.println(array[0].length);
System.out.println(array[1].length);
输出是:
3
3
这意味着,那个人A是对的。
答案 1 :(得分:0)
人A是正确的。
此代码的输出:
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
int[][] array1 = new int[2][3];
//int[][] array2 = new int[3][2];
System.out.println(intArray2DToString(array1));
//System.out.println(intArray2DToString(array2));
}
/**
* Converts a 2D int array to a string
*/
static String intArray2DToString(int[][] array2D)
{
String str = "[";
for(int[] array : array2D)
{
str += Arrays.toString(array);
str += ", ";
}
str += "]";
str = str.replaceAll(", (?=])", "");
return str;
}
}
是:
[[0, 0, 0], [0, 0, 0]]
答案 2 :(得分:0)
以下代码可能会对数组在Java中的工作方式有所了解:
int[][] array=new int[1][3];
int[] sub=array[0];
sub[0]=1; sub[1]=2; sub[2]=42;
System.out.println(Arrays.deepToString(array));
array=new int[2][];
System.out.println(Arrays.deepToString(array));
array[0]=sub; array[1]=sub;
System.out.println(Arrays.deepToString(array));
答案 3 :(得分:0)
基本上二维数组的语法如下,
DataType arrayName[ ][ ] = new int[rowsize][columnsize];
很明显,人A是对的。
要清除混淆,请参考Java中2d数组上的this资源。
答案 4 :(得分:-3)
int[][] array = new int[2][3];
结构大致如下:
[[x, x], [x, x], [x, x]]