4.1) OCJP/1Z0-851 / 2012-08-28

OCJP (1Z0-851 / 2012-08-28 / Exam A) - 13 번

kkikkodev 2015. 7. 8. 22:55



관련 이론 및 문법

(변수의 영역 (scope) 참고)

http://kkikkodev.tistory.com/89


문제 의도

주어진 소스코드를 컴파일하여 실행하면 어떤 결과가 나오는지 고르는 문제입니다.


답안

B


풀이 방법

parse 메소드에 try-catch-finally 구문이 있는 것을 보아서, 언뜻 보면 예외처리에 대한 문제로 착각할 수도 있지만, 이것은 변수의 scope 에 대한 문제입니다. 3 라인에서, float 형 f 라는 변수를 선언하므로, f 변수의 유효범위는 이 변수가 포함되어 있는 가장 가까운 블럭인 try{} 내부가 됩니다. 따라서, try{} 를 빠져 나오면, f 변수는 메모리에서 소멸되므로, 5 라인이나, 7 라인처럼 catch, finally 블럭에서 f 를 접근하려는 시도는 잘못된 것입니다. (try, catch, finally 모두 각각의 블럭 범위를 갖기 때문입니다.) 만약, 잘못된 부분을 바로잡고자 한다면, float f = 0.0f; 선언부만 2 라인 (try 구문 위) 에 위치시키고, 3, 5, 7 라인에서는 f 를 사용하면 됩니다. 따라서, 잘못된 f 변수의 접근이므로, 컴파일 에러가 나서, 답안은 B 가 됩니다.