모든 배열 요소를 0으로 초기화하는 단축키가 있습니까? 요소를 0으로 초기화합니다. 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;
}



답변

정수 유형의 배열에 대한 기본값 0은 언어 사양에 의해 보장됩니다 .

각 클래스 변수, 인스턴스 변수 또는 배열 구성 요소는 작성 될 때 기본값으로 초기화됩니다 (§15.9, §15.10) […] type int의 경우 기본값은 0 0입니다.  

1 차원 배열을 다른 값으로 초기화하려는 경우 java.util.Arrays.fill ()을 사용할 수 있습니다 ( 물론 내부적으로 루프를 사용함).


답변

다른 답변은 정확하지만 (int 배열 값은 기본적으로 0으로 초기화됩니다) 명시 적으로 수행하려는 경우 (예 : 값 42로 채워진 배열을 원할 경우) fill () 메서드를 사용할 수 있습니다 배열의 클래스 :

int [] myarray = new int[num_elts];
Arrays.fill(myarray, 42);

또는 1 라이너 팬이라면 다음과 같은 Collections.nCopies()루틴을 사용할 수 있습니다 .

Integer[] arr = Collections.nCopies(3, 42).toArray(new Integer[0]);

arr에게 가치를 줄 것입니다 :

[42, 42, 42]

(이것은 Integer아니지만 int, 기본 유형이 필요한 경우 Apache CommonsArrayUtils.toPrimitive() 루틴을 연기 할 수 있습니다 .

int [] primarr = ArrayUtils.toPrimitive(arr);


답변

자바의 모든 요소 (프리미티브 정수 타입은 byte short, int, long) 기본적으로 0으로 초기화된다. 루프를 저장할 수 있습니다.


답변

어떻게 응용 프로그램의 성능을 저하 시키는가? …? 다음을 읽으십시오.

Java 언어 사양에서는 모든 객체 의 기본값 / 초기 값 을 다음과 같이 지정할 수 있습니다.

byte 유형의 경우 기본값0 이며, 즉 (byte)의 값은 0 입니다.

short 유형의 경우 기본값0 이며, 즉 (short) 값은 0 입니다.

int 유형의 경우 기본값0 , 즉 0 입니다.

long 유형의 경우 기본값0 , 즉 0L 입니다.

float 유형의 경우 기본값양수 0 , 즉 0.0f 입니다.

double 유형의 경우 기본값양수 0 , 즉 0.0d 입니다.

char 유형의 경우 기본값 문자, 즉 ‘ \ u0000 ‘입니다.

boolean 유형의 경우 기본값false 입니다.

대한 모든 참조 형디폴트 값은 이다 널 (null) .

이 모든 것을 고려하면 int 배열의 경우 기본적으로 모든 배열 요소가 0이므로 배열 요소의 값을 0으로 초기화 할 필요가 없습니다.

배열 은 단일 유형의 고정 된 수의 값을 보유하는 컨테이너 객체 이기 때문 입니다. 이제 배열의 유형은 int 이므로 모든 배열 요소의 기본값은 자동으로 0 입니다. int 유형을 보유하고 있기 때문입니다 .

이제 모든 배열 요소의 기본값null 이되도록 String 유형배열고려 하십시오 .

왜 그렇게하지 않습니까?

질문에서 제안한대로 루프를 사용하여 null 값을 할당 할 수 있습니다.

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

그러나 그렇게하면 쓸모없는 기계 사이클 손실이 발생합니다. 많은 어레이가있는 애플리케이션에서 사용하고 각 어레이에 대해 수행하면 애플리케이션 성능이 상당한 수준까지 영향을 미칩니다.

기계 사이클을 많이 사용할수록 ==> 데이터 처리에 더 많은 시간이 소요됩니다 ==> 출력 시간이 크게 증가 합니다. 따라서 응용 프로그램 데이터 처리는 낮은 수준 (일부 수준까지 느림)으로 간주 될 수 있습니다.


답변

루프를 저장할 수 있으며 이미 0으로 초기화되었습니다. 로컬 변수의 경우에도 마찬가지입니다.

그러나 가독성을 위해 대괄호를 놓은 위치를 수정하십시오 (가장 모범 사례로 인식됨).

int[] arr = new int[10];


답변

Float 또는 Integer를 사용하는 경우 다음과 같이 기본값을 지정할 수 있습니다 …

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


답변

기존 배열 크기로 빈 배열을 새로 만들어 배열에 다시 할당 할 수 있습니다. 이것은 다른 것보다 빠를 수 있습니다. 스 니펫 :

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