관련 이론 및 문법

(Wrapper Class 참고)

http://kkikkodev.tistory.com/189


(Boolean Class 참고)

http://kkikkodev.tistory.com/371


문제 의도

testIfA 메소드가 호출되고 난 후의 결과를 고르는 문제입니다.


답안

A


풀이 방법

소스코드에는, testIfA 와 testIfB 메소드가 정의되어 있습니다. testIfA 메소드에서는 testIfB 메소드를 호출하면서 매개변수로 "True" 를 넘긴 후, 그 결과를 토대로 참이면 "True" 라는 문자열을 출력하고, 거짓이면 "Not true" 라는 문자열을 출력하도록 되어 있습니다. testIfB 메소드는 매개변수로 String 형 str 변수를 받아서, 이를 가지고, Boolean.valueOf(str); 문장을 통해서, Boolean 형 객체를 생성하고 있습니다. 그리고 생성한 객체를 반환하고 있습니다.


Boolean.valueOf 메소드는 매개변수로 받은 문자열을 일단, 소문자로 모두 변환한 후에 (대소문자를 구분하지 않고) 그 문자열이 "true" 이면 true 객체를 생성하고, 그 문자열이 "true" 가 아니면 false 객체를 생성합니다. 따라서, 매개변수로 "True" 를 넘기더라도, 이는 "true" 가 될 것이고, 이것은 "true" 문자열이기 때문에, true 객체를 반환합니다. testIfB 메소드의 결과로 true 객체가 반환되고, 이는 auto unboxing 되어 true 기본 자료형이 되어, 12 라인의 if 문의 조건식은 참이 되어 13 라인이 실행되고, 그 결과, "True" 를 출력하게 됩니다.


따라서, 답안은 A 가 됩니다.


by kkikkodev 2016. 11. 13. 01:19