글
관련 이론 및 문법
(변수의 기본 초기화 값 참고)
http://kkikkodev.tistory.com/111
문제 의도
주어진 소스코드를 컴파일하여 실행한 결과를 고르는 문제입니다.
답안
D
풀이 방법
소스코드를 보면 크게 2 가지로 구분할 수 있습니다. 먼저 위쪽에 라인 번호가 적혀 있는 부분인 클래스 정의부가 있고, 그 아래, 실행문이 있습니다.
먼저 정의부를 살펴보면, 1 번 라인에, ClassA 가 정의되어 있고, 그 안에 methodA 가 있습니다. 8 번 라인에, ClassB 가 있고, 그 안에 멤버변수 classC 와 멤버 메소드 getValue 가 있습니다. 마지막으로, 15 번 라인에 ClassC 가 있고, 그 안에 멤버 변수 value 가 있고, 멤버 메소드 getValue 가 있습니다.
그러면, 실행문부터 살펴보면, ClassA a = new ClassA(); 문을 통해서, ClassA 형 객체를 생성하여 a 인스턴스 변수로 가리키게 합니다. 그리고, a.methodA(); 문을 호출하여, 2 번 라인의 methodA 로 제어권을 넘깁니다. 3 번 라인의 ClassB classB = new ClassB(); 문을 통해서, ClassB 형 객체를 만들어 classB 인스턴스 변수로 가리키게 합니다. 그리고, 4 번 라인에서, classB.getValue(); 문을 호출하여 제어권을 10 번 라인으로 넘기게 됩니다. 11 번 라인에서, return classC.getValue(); 문을 호출하려고 하는데, classC 는 따로 초기화된 적이 없는 String 형 멤버 변수이기 때문에, 기본적으로 null 로 초기화 되어 있을 것이고, null.getValue() 를 호출하려고 하다보니, NullPointerException 이 발생하게 됩니다.
따라서, 답안은 D 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 31 번 (0) | 2015.09.02 |
---|---|
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 30 번 (0) | 2015.09.02 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 29 번 (0) | 2015.09.02 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 28 번 (0) | 2015.09.02 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 27 번 (0) | 2015.09.02 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 25 번 (0) | 2015.09.02 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 24 번 (0) | 2015.09.02 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 23 번 (0) | 2015.08.28 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 22 번 (0) | 2015.08.28 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 21 번 (0) | 2015.08.28 |
RECENT COMMENT