在C/ c++中

int arr[10] = {0};

...将所有数组元素初始化为0。

Java中有类似的快捷方式吗?

我想避免使用循环,可以吗?

int arr[] = new int[10];
for(int i = 0; i < arr.length; i++) {
    arr[i] = 0;
}

当前回答

语言规范保证整型数组的默认值为0:

每个类变量、实例变量或数组组件在创建时都使用默认值初始化(§15.9,§15.10)[…]对于int类型,默认值为0,即0。

如果你想将一个一维数组初始化为不同的值,你可以使用java.util.Arrays.fill()(当然会在内部使用循环)。

其他回答

在c/cpp中,除了初始化所有带有0下标的数组外,没有其他快捷方式。例:

  int arr[10] = {0};

但是在java中有一个神奇的工具叫做Arrays.fill(),它可以用你选择的整数填充数组中的所有值。例:

  import java.util.Arrays;

    public class Main
    {
      public static void main(String[] args)
       {
         int ar[] = {2, 2, 1, 8, 3, 2, 2, 4, 2};
         Arrays.fill(ar, 10);
         System.out.println("Array completely filled" +                          
            " with 10\n" + Arrays.toString(ar));
   }
 }

是的,数组中的int值初始化为0。但你不能保证这一点。Oracle文档指出这是一种糟糕的编码实践。

将数组声明为类中的实例变量,即在每个方法之外,JVM将给它0作为默认值。你不必再担心了

    int a=7, b=7 ,c=0,d=0;
    int dizi[][]=new int[a][b];
    for(int i=0;i<a;i++){
        for(int q=d;q<b;q++){
            dizi[i][q]=c;               
            System.out.print(dizi[i][q]);
            c++;
        }

        c-=b+1;
        System.out.println();               
    }

结果 0123456 -1012345 2 - 101234 3-2-10123 4-3-2-1012 5-4-3-2-101 6-5-4-3-2-10

在零的情况下不需要初始化,因为Java中的int默认值为零。 对于非0的值,java.util.Arrays提供了许多选项,最简单的一个是fill方法。

int[] arr = new int[5];
Arrays.fill(arr, -1);
System.out.println(Arrays.toString(arr));  //[-1, -1, -1, -1, -1 ]

int [] arr = new int[5];
// fill value 1 from index 0, inclusive, to index 3, exclusive
Arrays.fill(arr, 0, 3, -1 )
System.out.println(Arrays.toString(arr)); // [-1, -1, -1, 0, 0]

我们也可以使用Arrays.setAll()如果我们想在条件的基础上填充值:

int[] array = new int[20];
Arrays.setAll(array, p -> p > 10 ? -1 : p);

int[] arr = new int[5];
Arrays.setAll(arr, i -> i);
System.out.println(Arrays.toString(arr));   // [0, 1, 2, 3, 4]