每个循环如何在这个矩形阵列中工作?

How for each loop is working in this rectangular array?

import java.util.Scanner;
public class Recarraysumandmat 
{
    public static void main(String[] args) { 

        Scanner kb=new Scanner(System.in);
        System.out.println("Enter row and column size: ");
        int n=kb.nextInt();
        int m=kb.nextInt();
        int sum=0;
        int [][]arr;
        arr=new int[n][m];
        for (int[] arr1 : arr) {
            for (int j = 0; j < arr1.length; j++) {
                arr1[j] = kb.nextInt();
            }
        }
        for (int[] arr1 : arr) 
        {
            for (int j = 0; j < arr1.length; j++) {
                System.out.print(arr1[j] + " ");
                sum = sum + arr1[j];
            }
            System.out.println();
        }
        System.out.println("The sum is: "+sum);
    }
}

请告诉我这里的 for-each 循环如何工作以获取矩形数组中的输入,以及为什么 NetBeans IDE 建议在正常的 for 循环上使用每个循环 我已经研究了 for-each 循环仅对遍历数组有用,对数组中的输入没有用。

如果可以的话,请在这里解释一下 for-each 循环如何使用矩形数组。

java 中的二维数组实际上不是二维数组,而是数组的数组,因此一维数组将包含对其他数组(行)的引用。当进入循环并为每次迭代设置一个数组时,它只是跟随一个引用来获取该数组,然后使用 arr1.length 获取它的大小(这是该数组的大小,它将是基本数组)