Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有将所有数组元素初始化为零的快捷方式?_Java - Fatal编程技术网

Java 是否有将所有数组元素初始化为零的快捷方式?

Java 是否有将所有数组元素初始化为零的快捷方式?,java,Java,在C/C++中,我曾经 int arr[10] = {0}; …将我的所有数组元素初始化为0 Java中有类似的快捷方式吗 我想避免使用循环,可能吗 int arr[] = new int[10]; for(int i = 0; i < arr.length; i++) { arr[i] = 0; } int-arr[]=新的int[10]; 对于(int i=0;i,因此考虑所有数组元素的默认值将是自动为0 < /强>,因为它是保持int类型>/P> 现在,考虑字符串类型的数

C/C++
中,我曾经

int arr[10] = {0};
…将我的所有数组元素初始化为0

Java中有类似的快捷方式吗

我想避免使用循环,可能吗

int arr[] = new int[10];
for(int i = 0; i < arr.length; i++) {
    arr[i] = 0;
}
int-arr[]=新的int[10];
对于(int i=0;i
在java中,默认情况下,所有元素(基本整数类型
字节
整数
)都初始化为0。您可以保存循环。

您可以保存循环,初始化已设置为0。即使对于局部变量也是如此

但为了可读性(公认的最佳实践),请更正括号的位置:


整数类型数组的默认值为0,由以下条件保证:

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


如果要将一维数组初始化为不同的值,可以使用(当然会在内部使用循环)。

当其他答案正确时(int数组值默认初始化为0),如果要显式执行此操作(例如,如果希望数组中填充值42),可以使用类的fill()方法:

或者,如果您是单行程序的粉丝,您可以使用以下例程:

将为arr提供以下值:

[42, 42, 42]
(虽然它是
Integer
,而不是
int
,但如果您需要原语类型,可以遵循例程:


它如何降低应用程序的性能…?请阅读以下内容

在Java语言规范中,任何对象的默认值/初始值可以如下所示

对于类型byte,默认值0,即(byte)的值为0

对于类型short的默认值为零,即(short)的值为0

对于类型int的默认值为0,即0

对于类型long默认值为零,即0L

对于类型float默认值为正零,即0.0f

对于类型double默认值为正零,即0.0d

对于类型char默认值是null字符,即“\u0000

对于类型布尔值默认值

对于所有引用类型默认值

考虑到所有这些,您不需要为数组元素初始化零值,因为默认情况下,int-array的所有数组元素都是0

因为数组是一个容器对象,它包含固定数量的单一类型的值。 现在,对于您来说,数组的类型是<强> int /强>,因此考虑所有数组元素的默认值将是<强>自动为0 < /强>,因为它是<强>保持int类型>/P> 现在,考虑字符串类型的数组,以便所有数组元素都有默认值null

为什么不那样做?

您可以按照问题中的建议,通过使用循环来分配空值

int arr[] = new int[10];
for(int i=0;i<arr.length;i++)
    arr[i] = 0;
int-arr[]=新的int[10];

对于(int i=0;i
更多处理数据的时间==>输出时间将显著增加。因此,应用程序数据处理可以被视为低级别(降低到某个级别)。

如果使用浮点或整数,则可以这样指定默认值

Integer[] data = new Integer[20];
Arrays.fill(data,new Integer(0));

将数组声明为类中的实例变量,即out-of-each方法,JVM将为其提供0作为默认值。您不必再担心了

是的,数组中的int值初始化为零。但您不能保证这一点。Oracle文档说明这是一种不好的编码做法。

您可以创建一个新的空数组使用现有阵列大小,您可以将它们重新分配给阵列。这可能比其他方法更快。 鹬:

结果:

0
0
0
0
0    
0
0
0
0
inta=7,b=7,c=0,d=0;
int dizi[][]=新int[a][b];

对于(int i=0;i,正如大家所提到的,初始化后int值已经为零。如果您确实需要将数组值设置为零,并希望对其进行优化,请使用
System.arraycopy

static private int[] zeros = new float[64];
...
int[] values = ...
if (zeros.length < values.length) zeros = new int[values.length];
System.arraycopy(zeros, 0, values, 0, values.length);
static private int[]zeros=新浮点[64];
...
int[]值=。。。
如果(zeros.length
这在大多数或所有JRE实现中都使用了
memcpy
。请注意,即使使用多个线程,这样的静态也是安全的,因为最坏的情况是多个线程同时重新分配
0
,这不会造成任何伤害

您还可以使用
Arrays.fill
,正如其他一些人所提到的。
Arrays.fill
可以在智能JVM中使用
memcpy
,但可能只是一个Java循环和需要的边界检查


当然,对您的优化进行基准测试。

另一种方法是在Java8上使用lambda

 Arrays.stream(new Integer[nodelist.size()]).map(e -> 
 Integer.MAX_VALUE).toArray(Integer[]::new);

在c/cpp中,没有快捷方式,只能使用零下标初始化所有数组。例如:

  int arr[10] = {0};
但是在java中有一个叫做Arrays.fill()的神奇工具,它可以用
package com.array.zero;
public class ArrayZero {
public static void main(String[] args) {
    // Your array with data
    int[] yourArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    //Creating same sized array with 0
    int[] tempArray = new int[yourArray.length];
    Assigning temp array to replace values by zero [0]
    yourArray = tempArray;

    //testing the array size and value to be zero
    for (int item : yourArray) {
        System.out.println(item);
    }
}
}
0
0
0
0
0    
0
0
0
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();               
    }
static private int[] zeros = new float[64];
...
int[] values = ...
if (zeros.length < values.length) zeros = new int[values.length];
System.arraycopy(zeros, 0, values, 0, values.length);
 Arrays.stream(new Integer[nodelist.size()]).map(e -> 
 Integer.MAX_VALUE).toArray(Integer[]::new);
  int arr[10] = {0};
  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[] 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]
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]
int[] intArray = new int[10];