2017-04-23 1 views
-1

로컬 변수에 기본값을 지정해야하는 경우 java가 로컬로 선언 된 배열의 기본값을 제공하는 이유는 무엇입니까? varible 디폴트 값에 대한 위의 코드에서처럼java의 배열 기본값은 무엇입니까?

import java.util.Arrays; 
import java.util.Scanner; 

public class MatrixMultiplication { 

int a; 
int a1[][]=new int[2][2]; 

     public static void main(String[] args) { 

     int a2[][]=new int[2][2]; 
     int b; 

     MatrixMultiplication mm=new MatrixMultiplication(); 
     System.out.println(mm.a); 
     System.out.println(mm.a1[1][0]); 
     System.out.println(b); 
     System.out.println(a2[1][0]); 

    } 

}

는 0이고 B의 우리는 가치를 setsome해야합니다. 그런 다음 a1 [] []에 대해 각 요소의 dafult 값은 0입니다. 여기까지는 모든 값은 디 퍼트 값으로 제공되지만 a2 [] []는 로컬로 선언되므로 이해할 수 없으므로 요소가 기본적으로 초기화되지 않아야합니다. 자바 규칙 그래서 어떻게 0

+0

정수 및 부동 소수점 프리미티브의 경우 부울 값은 'false'이고 다른 모든 참조 유형은 'null'입니다. (그러나 지역 변수에 대해서는 기본값이 없습니다. 새 배열을 초기화하는 새로운 객체를 만들기 위해'new'를 호출합니다. 그러면 요소가 0으로 설정되는 방법은'new'입니다.) – markspace

답변

2

로 각 요소에 디폴트로 초기화되지만 [] [] 로컬 다음 선언 A2로 요소는 사이에 큰 차이가있다 deaflt으로

initialosed해서는 안 변수 및 배열 항목.

b 초기화되지 않은 것은 일반적인 코딩 오류이므로 컴파일러에서 호출합니다. 귀하의 경우,

그러나 a2이 초기화되고, 배열이   — int[] (또는 a2[0]) 및 int (a2[0][0]에 대한) 할당 될 때 배열의 내용은 배열의 요소 유형에 대한 기본값으로 설정됩니다.

+0

thats 내가 묻는 것은 thats입니다. 배열이 로컬로 선언 될 때 배열이 기본값으로 초기화되는 이유 – Ankit

+0

@Ankit : 선언 된 위치와 아무 관계가 없습니다. 당신은 적극적으로 그것을 만들고 있습니다 :'새로운 int [2] [2]'. –

관련 문제