如何使用java增强循环填充二维数组?

如何使用java增强循环填充二维数组?,java,arrays,Java,Arrays,基本上,我正在尝试这个方法,但这只会让数组充满零。我知道如何用正常的来填充循环,例如 for (int i = 0; i < array.length; i++) 这是因为元素字符不是指向数组中内存位置的指针,它是字符的副本,因此更改它只会更改副本。因此,您只能在引用数组和对象(而不是简单类型)时使用此表单 赋值仅改变局部变量元素: 那么什么时候应该使用for-each循环 任何时候都可以。它真的美化了你的代码。不幸的是,您不能在任何地方使用它。例如,考虑排除方法。程序需要访问迭代器才能

基本上,我正在尝试这个方法,但这只会让数组充满
零。我知道如何用正常的
来填充
循环,例如

for (int i = 0; i < array.length; i++)

这是因为
元素
字符不是指向数组中内存位置的指针,它是字符的副本,因此更改它只会更改副本。因此,您只能在引用数组和对象(而不是简单类型)时使用此表单

赋值仅改变局部变量
元素

那么什么时候应该使用for-each循环

任何时候都可以。它真的美化了你的代码。不幸的是,您不能在任何地方使用它。例如,考虑排除方法。程序需要访问迭代器才能删除当前元素。for-each循环隐藏迭代器,因此不能调用remove。因此,for-each循环不可用于过滤类似地,它不适用于需要在遍历列表或数组时替换其中元素的循环

已经解释了为什么这不起作用。但是,您可以使用
数组。填充
来帮助您初始化数组:

    char[][] array = new char[10][10];
    for (char[] row : array)
        Arrays.fill(row, '~');

@Shark:数组不提供迭代器(除非您使用
arrays.asList()
)包装它们),但是普通的for循环可以正常工作。
    char[][] array = new char[10][10];
    for (char[] row : array)
        Arrays.fill(row, '~');