Java에서 컴파일러는 C와 같이 초기화되지 않은 변수의 값이 0이어야한다고 가정하지 않는 이유는 무엇입니까? 일반적으로 이것이 BetterPractice인가요? 아니면 Java에 특별한 이유가 있습니까?Java에서 변수를 초기화해야하는 이유는 무엇입니까?
-5
A
답변
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으로 설정한다는 점에 유의하십시오. 추가 제한 사항은 컴파일러에 의해 시행됩니다. –
관련 문제
- 1. 원시 변수를 포함한 로컬 변수를 Java에서 항상 초기화해야하는 이유는 무엇입니까?
- 2. 클래스의 변수를 초기화해야하는 이유는 무엇입니까?
- 3. 자바 : 원시 로컬 변수를 초기화해야하는 이유는 무엇입니까?
- 4. C++에서 const 변수를 초기화해야하는 이유는 무엇입니까?
- 5. 의도의 핵심을 초기화해야하는 이유는 무엇입니까?
- 6. 포인터를 변수로 초기화해야하는 이유는 무엇입니까?
- 7. 번호 객체를 초기화해야하는 이유는 무엇입니까?
- 8. C++에서 정적 클래스 변수를 초기화해야하는 이유는 무엇입니까?
- 9. 스칼라 언어에서 기본값을 사용하는 대신 인스턴스 변수를 초기화해야하는 이유는 무엇입니까?
- 10. 생성자가 완료되기 전에 최종 변수를 초기화해야하는 이유는 무엇입니까?
- 11. 파일 범위 정적 변수를 0으로 초기화해야하는 이유는 무엇입니까?
- 12. 문자열을 초기 값으로 초기화해야하는 이유는 무엇입니까?
- 13. main() 외부에서 정적 멤버를 초기화해야하는 이유는 무엇입니까?
- 14. Java에서 지역 변수를 "자동"이라고도하는 이유는 무엇입니까?
- 15. 로컬 변수를 초기화해야하는 이유와 사용하기 전에 인스턴스 변수를 초기화하지 않아야하는 이유는 무엇입니까?
- 16. 멤버 변수가 선언 된 순서대로 초기화해야하는 이유는 무엇입니까?
- 17. 구성 파일에서 초기화해야하는 경우 프로젝트에서 전역 변수를 공유하는 방법은 무엇입니까?
- 18. paintComponent() 내에서 x 좌표와 y 좌표를 초기화해야하는 이유는 무엇입니까?
- 19. 내 개체가 java에서 동일한 변수를 사용하는 이유는 무엇입니까?
- 20. Java에서 부울 식의 임시 변수를 선언 할 수없는 이유는 무엇입니까?
- 21. 나는과 같이 내가 (null로) 멤버 변수를 초기화해야하는 템플릿 클래스를 가지고
- 22. Java에서 변수를 사용하는 방법은 무엇입니까?
- 23. 런타임에 초기화해야하는 상수 변수
- 24. 데이터를 초기화해야하는 위치는 어디입니까?
- 25. 변수를 재설정해야하는 이유는 무엇입니까?
- 26. URLClassLoader.addURL이 Java에서 보호되는 이유는 무엇입니까?
- 27. LinkedList에 java에서 initialCapacity가없는 이유는 무엇입니까?
- 28. java에서 CLASSPATH가 중요한 이유는 무엇입니까?
- 29. 이것이 java에서 발생하는 이유는 무엇입니까?
- 30. Java에서 상수를 사용하는 이유는 무엇입니까?
C의 자동 변수에는 불확정 값이 있지만 정적 변수는 0으로 초기화됩니다. –
자바에있어 특별한 것이 아닌 것 같습니다. – Thilo
* 멤버 변수의 경우 * 가정 *합니다. 로컬 변수에 대해서는 성능상의 이유로 의심의 여지가 없지만 실제로 답변을 알고있는 사람은 Jim Gosling뿐입니다. Java에만 해당되는 것은 없습니다. – EJP