강의로 돌아가기
치우레아

왜4가 나오나요?

10이라는 변수와 4라는 변수에서 굳이 10이 아닌 4라는 값을 공유하는 이유가 무엇인가요?

작성중인 코드―Car.java
1
2
3
public class Car{
    static int wheelCount;
}
작성중인 코드―StaticExam.java
1
2
3
4
5
6
7
8
9
10
11
12
public class StaticExam{
    public static void main(String []args){
        Car taxi = new Car();
        Car suv = new Car();

        taxi.wheelCount = 10;
        suv.wheelCount = 4;

        System.out.println("taxi의 바퀴수:"+ taxi.wheelCount);
        System.out.println("suv의 바퀴수:"+ suv.wheelCount);
    }
}
2 개의 답변
프로그래머스

10과 4중에 4를 공유하는게 아닙니다.

두 인스턴스, taxi와 suv는 wheelCount라는 static 변수를 공유합니다.

taxi.wheelCount = 10;에서 둘이 공유하는 wheelCount 값이 10으로 설정되었으나,
suv.wheelCount = 4;에서 wheelCount 값이 4로 바뀝니다.

10을 4가 덮어쓴 꼴이지요.

  • 정임혜
    안녕하세요. 강의 잘 보고 있습니다 감사합니다 :) 저도 이 부분이 헷갈리는데 static 변수를 공유하는 것까지는 이해했습니다. 그렇다면 가장 나중에 설정한 값(4)이 wheelCount 에 저장되는 것인가요?
    정임혜―2019.01.23 17:45
김영승

static int wheelCount는 static으로 선언 되어서 wheelCount에 할당된 메모리 공간은 모든 Car 인스턴스가 공유하게 되요.
고로 taxi.wheelCount, suv.wheelCount 모두 같은 메모리공간을 가르키게 됩니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.