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

나누스_개발님의 프로필 이미지
나누스_개발

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이1

초기화 선언 관련 질문

해결된 질문

작성

·

370

·

수정됨

2

 

안녕하세요!!

지금 배열 문제풀이 하고 있는데요,

보통 int sum = 0;

이런식으로 0값으로 초기화 시켜주잖아요

근데 어떤때는 double avg;

이런식으로 그냥 하는데 두개의 차이가 뭐지궁금해요

 

코드 만들다보면 계산식이 어디있냐에 따라

어떤때는

double avg; 쓰고 어떤때는 0으로 초기화시켜야 돌아가더라구요..! 혹시 정확하게 구분지을 수 있을까요?

답변 2

2

정말 감사합니다!

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 나누스_개발님

자바에서 지역 변수의 경우 한번이라도 값이 대입 되어야 해당 변수를 사용할 수 있습니다.

다음 코드를 보고 이야기하신 듯 하여 이 코드로 설명을 드리겠습니다.

public class ArrayEx4 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] numbers = new int[5];
        int sum = 0;
        double average;

        System.out.println("5개의 정수를 입력하세요:");
        for (int i = 0; i < 5; i++) {
            numbers[i] = scanner.nextInt();
            sum += numbers[i];
        }

        average = (double) sum / 5;

        System.out.println("입력한 정수의 합계: " + sum);
        System.out.println("입력한 정수의 평균: " + average);
    }
}

이 코드에서 sum 변수는 sum += numbers[i] 연산을 사용하게 됩니다.

이 연산자는 결국 sum = sum + numbers[i]와 같은 연산을 하게 됩니다. 결과적으로 오른쪽에서 sum 이라는 값을 읽어서 사용해야 합니다. 오른쪽의 sum 값을 읽어서 사용하기 전에 값을 먼저 대입해야 합니다. 그래서 sum=0이라는 초기값을 먼저 대입한 것입니다.

 

반면에 average는 다음과 같이 단순히 대입만 합니다. 결과적으로 이 시점에 초기화가 일어나는 것이지요.

average = (double) sum / 5;

따라서 이 경우 먼저 초기화 하지 않아도 괜찮습니다.

감사합니다.

나누스_개발님의 프로필 이미지
나누스_개발

작성한 질문수

질문하기