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

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

kkikkodev 2015. 7. 31. 02:28



관련 이론 및 문법

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

http://kkikkodev.tistory.com/89


문제 의도

주어진 소스코드를 컴파일하여 실행한 결과를 고르는 문제입니다.


답안

D


풀이 방법

컴파일하여 실행하면, 2 번 라인부터 실행됩니다. (main 메소드) 3 번 라인에서 x 변수를 int 형으로 선언후 5 로 초기화합니다. 4 번 라인에서 Pass 형 인스턴스 변수 p 를 선언하고, new Pass() 를 통해서 Pass 형 인스턴스를 만들어 p 에 대입합니다. 5 번 라인에서 p 의 doStuff 메소드를 호출하면서 x 값 (5) 을 매개변수로 넘깁니다. 9 번 라인에서, x 라는 매개변수에 5 가 저장되어 전달됩니다. (9 번 라인의 x 라는 매개변수와 3 번 라인의 main 메소드 내에 선언되어 있는 지역변수 x 는 다릅니다.) 10 번 라인에서 매개변수 x 를 출력하고 (값은 5), 후위 증가 연산자로 1 증가시킵니다. (5 -> 6) 하지만, 메소드가 끝나면, 이 매개변수 x 도 메모리에서 없어집니다. 메소드가 끝나고, 다시 6 라인으로 와서, main 메소드에서 선언되었던, 변수 x 의 값을 출력합니다. (아직 5) 따라서, 5 가 2 번 출력됩니다. 여기서는, 같은 이름의 변수더라도, 영역이 다르면 다른 것으로 인식된다는 점을 꼭 기억하고 넘어가야 하겠습니다. 결과적으로, 답안은 D 입니다.