Java/[inflearn] 자바 입문

[김영한_자바입문][7. 훈련] 변수 선언 및 초기화_임시 변수 (p.14, p.17, p.21)

줌인. 2024. 1. 19. 11:46
즉 문을 나가는 방법은 하나가 아니라 여러가지 방법이 존재한다.
따라서 사람마다, 팀마다 문을 나가는 방법이 여러개이기 때문에
나만의 방법(로직)을 만들고, 선택하자! 방법은 무한대이다.

 

 

 

 

[p.14 / 선생님 작성 코드] int temp(임시변수)의 단독 선언 -> 초기화X

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    int temp;

    temp = a;
    a = b;
    b = temp;

    System.out.println("a = " + a);
    System.out.println("b = " + b);
}

 

[p. 14 / 내가 작성한 코드] 지역 변수 최소화를 위해 int temp 선언과 동시에 a로 초기화

public static void main(String[] args) {
    int a = 10;
    int b = 20;

    int temp = a;
    a = b;
    b = temp;

    System.out.println("a = " + a);
    System.out.println("b = " + b);
}
명시적으로 값을 할당하지 않고 초기화하는 이유(=변수 선언만)는 해당 변수가 향후 어떤 값으로 사용될지 확실하지 않거나, 나중에 특정 조건에 따라 값이 결정될 때

 

둘 중 어떤 코드가 더 좋다고 말하기는 주관적이며, 코드 스타일은 팀이나 프로젝트에 따라 다를 수 있다.

1. 변수 범위의 최소화 : 변수 `temp`가 교환 작업과 관련이 있는 부분에서만 사용될 때 코드의 가독성이 높다.

    이를 위해 [2번 코드]처럼 변수를 교환 부분에 선언하는 것이 좋다고 판단했다.

2. 선언과 동시에 초기화 : [2번 코드]처럼 선언과 동시에 초기화하는 것이 코드를 읽는 사람이 

    변수의 역할을 더 쉽게 이해할 수 있게 도와준다고 판단했다.

종합적으로 내가 내린 판단은  [2번 코드]가 변수 범위를 최소화하고

선언과 동시에 초기화하며 명확한 변수 이름을 사용하여 가독성이  더 높을 것으로 생각된다. 

 

따라서 특이 케이스가 아니라면 추후 컴파일러에서 경고를 피하기 위해 변수를 선언하면서
동시에 초기화를 설정하는 것이 내가 설정한 나만의 프로그램 로직이 될 것이다.

 

 

하지만 이는 주관적인 의견일 뿐이며, 코드 스타일과 프로젝트의 가이드라인에 따라 다를 수 있다.

 

 

[p. 17 / 선생님 & 내가 작성한 코드] if 내부에서 사용되는 temp변수

                                                         -> 지역변수 스코프 값을 최소화하기 위해 변수&초기화 동시 선언

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.print("첫 번째 숫자를 입력하세요 : ");
    int num1 = scanner.nextInt();

    System.out.print("두 번째 숫자를 입력하세요 : ");
    int num2 = scanner.nextInt();

    if (num1 > num2) {
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }

    while (num1 <= num2) {
        System.out.print(num1);

        if (num1 != num2) {
            System.out.print(",");
        }
        num1++;
    }
}

 

맨처음 코드 1과 코드 3번에서 temp 변수의 사용 목적이 서로 다르기 때문에 선언과 초기화의 위치도 다릅니다.

코드 1번에서는 temp 변수가 교환 작업에만 사용되므로, 변수를 선언하고 나중에 값을 할당해도 문제가 없습니다. 하지만 코드 2번에서는 temp 변수가 두 값을 비교하여 더 작은 값을 num1에 할당하는데 사용되므로, 선언과 동시에 초기화하여 사용하는 것이 논리적으로 더 적절합니다.

 

단순 작업은 선언만 가능하지만, 복잡한 식(연산, 특별한 조건에 의한 초기화)가 있을 경우
변수 선언과 초기화를 동시에 진행하는 것이 옳다!

 

 

[p.21 / 선생님 작성 코드] main )  int num = 0; 변수 선언

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int sum = 0;
    int count = 0;
    int num = 0;

    System.out.println("숫자를 입력하세요. 입력을 중단하려면 -1을 입력하세요 : ");
    while (true) {
        num = input.nextInt();

        if (num == -1) {
            break;
        }

        sum += num;
        count++;
    }

    double average = (double) sum / count;
    System.out.println("입력한 숫자들의 합계 : " + sum);
    System.out.println("입력한 숫자들의 평균 : " + average);
}

 

[p.21 / 내가 작성한 코드] main ) while 구문 안에서 int number 부여 (스코프 값을 줄이기 위해서)

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int sum = 0;
    int count = 0;

    System.out.println("숫자를 입력하세요. 입력을 중단하려면 -1을 입력하세요 : ");
    while (true) {
        int num = input.nextInt();

        if (num == -1) {
            break;
        }

        sum += num;
        count++;
    }

    double average = (double) sum / count;
    System.out.println("입력한 숫자들의 합계 : " + sum);
    System.out.println("입력한 숫자들의 평균 : " + average);
}

  - 나의 스타일로 작성한 코드

728x90