为什么我得到数组的地址而不是值(二维数组)

rev*_*vvy 1 java arrays multidimensional-array

  5 import java.util.*;
  6 
  7 class Matrix {
  8     // declare the member field
  9     private int[][] matrix;
 10 
 12     public Matrix(int a, int b, int c, int d) {
 13         matrix = new int[2][2];
 14         matrix[0][0] = a;
 15         matrix[0][1] = b;
 16         matrix[1][0] = c;
 17         matrix[1][1] = d;
 18     }
 19     // identity matrix
 20     public Matrix(char i) {
 21         matrix = new int[2][2];
 22         matrix[0][0] = 1;
 23         matrix[0][1] = 0;
 24         matrix[1][0] = 1;
 25         matrix[1][1] = 0;
 26     }
 27 
 29     public int[][] toPow(int n, int[][] matrix) {
 30         if (n == 1)
 31             return matrix;
 32         else {
 33             int[][] temp = matrix;
 34             for (int i = 0; i < 2; i++) {
 35                 for (int j = 0; j < 2; j++) {
 36                     temp[i][j] += matrix[i][j] * this.matrix[j][i];
 37                 }
 38             }
 39             return toPow(n - 1, temp);
 40         }
 41     }
 42     public int[][] toPow(int n) {
 43         return toPow(n, this.matrix);
 44     }
 45 }
 46 
 47 class Maths {
 48 
 49     public static void main(String[] args) {
 55         Matrix m = new Matrix(1,2,3,4);
 56         System.out.println(Arrays.toString(m.toPow(2)));
 57         System.out.println(Arrays.toString(new int[][] {{1,2},{3,4}}));
 58     }
 59 }
Run Code Online (Sandbox Code Playgroud)

Arrays.toString(Array)应该在调用时打印出数组的内容.但是当我尝试在代码的最后两行中打印数组时,我得到的是地址而不是内容.谁能帮助我理解为什么会这样?

Jon*_*eet 5

您将看到调用顶部数组的toString()每个元素的结果.但每个元素本身就是一个数组.改为使用:Arrays.deepToString()

System.out.println(Arrays.deepToString(m.toPow(2)));
Run Code Online (Sandbox Code Playgroud)