인프런 커뮤니티 질문&답변

임형준님의 프로필 이미지
임형준

작성한 질문수

김영한의 실전 자바 - 기본편

문제와 풀이

Local vaeriable initialization

해결된 질문

작성

·

145

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
여기에 질문 내용을 남겨주세요.

사용 운영체제: M1 Mac

Java version: openjdk 17
---

문제: 상품 주문 시스템 개발 - 리팩토링 부분을 풀다가 약간 저의 개념이 애매모호한거 같아 질문드립니다.

Screenshot 2024-02-17 at 5.20.48 PM.png여기서 32번째 줄에 대한 내용입니다.
local variable을 +=연산자를 적용하려면 꼭 초기화를 해야되는지에 대한 겁니다.


기본적으로 primitive type의 int형은 0으로 자동 초기화가 됩니다. 그런데 local 범위에서 compile error가 납니다.

그 이유가 더 밖의 범위에서 totalAmount가 초기화가 되거나 할 때 버그가 생길 수 있기 때문에 compile에러가 일부러 나게끔 설정한건가요??

답변 1

2

안녕하세요. 임형준님, 공식 서포터즈 OMG입니다.

자바에서 지역변수로 사용하는 primitive 타입 변수는 초기화되지 않으면 컴파일 오류가 발생하는데요,

초기화되지 않은 변수는 예측할 수 없는 값이 할당되어 안전하지 않기 때문에 변수가 메모리에 할당되고 사용되기 전에 값을 가져야합니다.

.

반면 클래스 멤버 변수로 사용할 때의 경우 인스턴스화될 때는 변수가 힙 메모리에 저장되고 JVM이 자동으로 해당 타입의 기본 값을 할당합니다.

그래서 9번째 줄에서는 0을 출력하지만,imageimage

아래에서는 컴파일 에러가 발생합니다.

image

감사합니다.

임형준님의 프로필 이미지
임형준
질문자

명확하게 해주셔서 감사합니다.
오마이갓님

임형준님의 프로필 이미지
임형준

작성한 질문수

질문하기