2014-07-07 2 views
-5

Java에서 컴파일러는 C와 같이 초기화되지 않은 변수의 값이 0이어야한다고 가정하지 않는 이유는 무엇입니까? 일반적으로 이것이 BetterPractice인가요? 아니면 Java에 특별한 이유가 있습니까?Java에서 변수를 초기화해야하는 이유는 무엇입니까?

+9

C의 자동 변수에는 불확정 값이 있지만 정적 변수는 0으로 초기화됩니다. –

+0

자바에있어 특별한 것이 아닌 것 같습니다. – Thilo

+2

* 멤버 변수의 경우 * 가정 *합니다. 로컬 변수에 대해서는 성능상의 이유로 의심의 여지가 없지만 실제로 답변을 알고있는 사람은 Jim Gosling뿐입니다. Java에만 해당되는 것은 없습니다. – EJP

답변

1

변수를 할당하기 전에 변수를 사용하는 대부분의 상황은 실수이며 컴파일러가 명시 적으로 오류로 간주하여 프로그래밍 프로세스 초기에 이러한 버그를 잡는 데 도움이됩니다.

초기화되지 않은 변수에 0이 포함되어 있다고 가정하면이 기능이 제거됩니다. 프로그래머가 변수를 명시 적으로 0으로 지정하는 것이 런타임에 다소 까다로운 버그를 찾는 것보다 덜 중요하다는 것이 내 추측이다.

2

초기화되지 않은 변수를 사용하는 코드로 인해 예기치 않게 또는 의도하지 않은 결과가 발생합니다.

나는 자바 디자이너들이 루프에 고착 된 것처럼 C로 프로그래밍하는 동안 많은 문제에 직면 했음에 틀림 없다고 생각한다. 아마 그들이 자바를 개발할 때이 문제를 없애기로 결정했을 것이다. 그래서 자바를 강력한 언어라고 부릅니다.

또한 변수 초기 값을 할당하는 것이 항상 좋은 것은 아닙니다. 예를 들어

int i;  // uninitialized variable ,suppose it is initialize to 0 by compiler 
int j=5/i; // run time error 
+1

모든 실질적인 목적을위한 JVM은 할당 될 때 (컨텐트가 정의되지 않은 C와는 반대로) 가변 변수를 0으로 설정한다는 점에 유의하십시오. 추가 제한 사항은 컴파일러에 의해 시행됩니다. –

관련 문제