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

Aurora님의 프로필 이미지
Aurora

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

3. 최대 매출(Sliding window)

자바에서 변수 초기화에 대한 의견입니다.

작성

·

384

1

solution() {} 에서 중괄호 안에(메소드영역) 있는 변수(answer)를 지역변수라고 하는데 기본적으로 자바는 이 지역변수를 반드시 초기화를 해주어야 합니다. 안그러면 컴파일 에러가 발생하죠.

하지만 Main {} 처럼 클래스영역에 있는 변수를 전역변수 또는 멤버 변수(멤버 변수 = 클래스 변수 + 인스턴스 변수)라고 하는데 전역변수는 초기화를 하지 않아도 자동으로 기본값을 넣어줍니다.

영상에서 보여지는 코드는 solution 메소드 안에 있는 변수이므로 지역변수를 사용하고 int answer; 로만 선언을 했습니다.

이렇게만 하면 컴파일 에러가 발생하지만 밑에 줄에

answer = sum; 으로 초기화를 했기 때문에 컴파일 에러가 발생하지 않습니다.

멘토링 문제에서도 for {} 문 안에 변수 pi, pj 역시 지역 변수이므로 반드시 초기화를 해주어야 합니다.

답변 2

0

지역 변수라 자동 초기화가 안되는데다가, 초기화하는 코드가 if문 안에 있으니 조건에 따라 초기화가 안된 값을 사용하게 될 수 있으니 컴파일러에서 에러를 발생시키는 것 같습니다.

입력 값이 올바른 값이라는 것을 알고 있고, 조건문 안이 반드시 실행될 것이라는 것을 아는 저희의 관점을 컴파일러는 알지 못해서 발생하는 일이라고 생각합니다.

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

감사합니다.

Aurora님의 프로필 이미지
Aurora

작성한 질문수

질문하기