다음 Java 프로그램의 실행 결과를 쓰시오.
class Counter {
private static final Counter INSTANCE = new Counter();
private int value = 0;
private Counter() {}
static Counter getInstance() { return INSTANCE; }
void add() { value++; }
int getValue() { return value; }
}
public class Main {
public static void main(String[] args) {
Counter a = Counter.getInstance();
Counter b = Counter.getInstance();
a.add(); b.add(); a.add(); b.add();
System.out.print(a.getValue());
}
}모범답안
4
풀이와 판단 근거
getInstance는 호출할 때마다 새 객체를 만들지 않고, 클래스에 하나만 만들어 둔 INSTANCE를 돌려준다. a와 b가 가리키는 Counter 객체도 같다.
같은 value에 add를 네 번 호출했으므로 값은 0에서 4가 된다. 인스턴스를 하나만 두는 Singleton 구조다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 4와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.