2013-10-08 5 views
0

나는 간단한 질문이 있는데 나는 답을 찾지 못하는 것 같습니다. 나는 그것이 정말로 간단하다라고 생각한다. 그리고 나는 언어 버릇으로서 그것을 투옥 할 수있다.배열 초기화 제로 대 할당 된 제로

int[] newArray=new int[5]; 

은 배열을 초기화하고 모두 5 개의 위치에 모두 0을 갖습니다.

newArray[4]=0; 
//versus not assigning any value to specific position newArray[4] 

동일한 두 가지가 있습니까? 그렇지 않다면 어떻게 그 둘을 구별 할 수 있습니까?

배열을 만들 때 자동으로 배치 된 0과 특정 시점에서 프로그램에 할당 된 0을 구별 할 수 있습니까?

내가 묻는 주된 이유는 배열에 임의의 위치에 정수 값을 할당하는 프로그램을 가지고 있기 때문입니다. 검색 중에는 프로그램에 의해 할당 된 0과 초기화 된 것 중 어느 것이 었는지 알고 싶습니다. 제로.

+3

결과는 동일합니다. 모두 0이 동일하게 생성됩니다. – Thilo

+1

그 성가신 부정 이외에 0 –

답변

2

int을 배열에 넣었으므로 int의 기본값은 이므로 기본값은 동일합니다. 은 과 같기 때문에 두 가지를 구별 할 수 없습니다.

Integer을 사용하는 경우 배열은 null 초로 초기화됩니다. 이 경우 값이 설정되었는지 여부를 알 수 있습니다.

차이점을 알리고 싶으면 참조를 사용할 수 있습니다.

1

int[] newArray=new int[5]은 기본적으로 모든 요소를 ​​0으로 초기화합니다.

newArray[4]=0은 5 번째 요소의 값을 0으로 설정합니다. 다른 모든 요소는 기본적으로 사용됩니다. 그래서 둘 사이에는 차이가 없습니다.

이 집합을 이해하려면 newArray[4]=10을 대신 입력하십시오.

이제 배열의 내용이 {0,0,0,0,10}

1

왜 특질 말합니까입니까? 모든 참조 및 프리미티브에는 Java의 초기 기본값이 있습니다. int의 경우 0입니다. 참고 자료는 null입니다.

0

변수를 클래스의 구성원으로 인스턴스화하면 변수의 기본값은 숫자의 경우 0, 객체의 경우 null입니다. 그러나 메서드 내에서 변수를 선언하면 컴파일러는이 변수에 기본값을 할당하지 않으므로 변수를 설정하기 전까지는 해당 내용이 고정되지 않습니다.

따라서 메서드 내에서 수행하는 경우 이에 상응하지 않습니다 ;-)

+0

그래서 int [] newArray = new int [5]; 메서드 내에서 정의되지 않은 모든 위치를 떠날 것입니다 !!! –