다음 Java 프로그램의 출력값을 쓰시오.
public class Main {
static int value() {
int x = 2;
try {
x *= 3;
return x;
} finally {
x += 4;
System.out.print(x + " " );
}
}
public static void main(String[] args) {
System.out.print(value());
}
}모범답안
10 6
풀이와 판단 근거
try 블록에서 x는 6이 되고 return 식의 값 6이 먼저 보존된다. 메서드가 실제로 반환되기 전에 finally가 실행되어 지역 변수 x는 10으로 바뀌고 10과 공백을 출력한다.
finally가 별도의 return을 수행하지 않았으므로 이미 보존된 반환값 6은 바뀌지 않으며 main이 이어서 6을 출력한다.
자주 틀리는 지점
- finally가 return보다 실행되지 않는다고 판단
- finally에서 x가 10이 되었으므로 반환값도 10이라고 판단
- main의 출력이 먼저 실행된다고 판단
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.