Да, это возможно. Вот пример:
public class Main
{
public static void main(String[] args)
{
int[] A = new int[]{1, 2, 3};
int[] B = new int[]{4, 5, 6};
int[][] M = new int[2][];
M[0] = A;
M[1] = B;
for ( int i = 0; i < 2; i ++ ){
for (int j = 0; j < M[i].length; j++ ){
System.out.print(" "+ M[i][j]);
}
System.out.println("");
}
}
}
Выше распечатано:
1 2 3
4 5 6
Хотя мы можем сделать даже лучше. Если вы используете Java 5 или выше, используйте:
public static int[][] vertcat(int[]... args){
return args;
}
Тогда вы можете написать:
int[][] M = vertcat(A,B);
И это будет работать для любого количества аргументов.
Редактировать
Вышеупомянутый метод вставляет исходные массивы в другой массив, что означает, что любая модификация результата повлияет на исходные массивы, что может быть нежелательно. Используйте следующее для копирования значений:
public static int[][] copyMatrix(int[][] original){
if ( (original==null) || (original.length==0) || (original[0].length == 0) ){
throw new IllegalArgumentException("Parameter must be non-null and non-empty");
}
rows = original.length;
cols = original[0].length;
int[][] cpy = new int[rows][cols];
for ( int row = 0; row < rows; row++ ){
System.arraycopy(original[row],0,cpy[row],0,cols);
}
return cpy;
}
Если вы хотите, чтобы vertcat
вернул копию, а не оригинал, вы можете переопределить его как:
public static int[][] vertcat(int[]... args){
return copyMatrix(args);
}