글
관련 이론 및 문법
(String 클래스 참고)
http://kkikkodev.tistory.com/100
(String 클래스 VS StringBuilder 클래스 참고)
http://kkikkodev.tistory.com/102
문제 의도
주어진 소스코드의 3 라인에 넣었을 때, 4247 을 출력하는 보기를 2 개 고르는 문제입니다.
답안
B, E
풀이 방법
먼저, 보기 A 를 살펴보면, String 형 변수 s 에 "123456789" 를 가리키게 합니다. 그 다음 줄에서 s = (s - "123").replace(1, 3, "24") - "89"; 를 하는데, String 과 관련된 연산자 중에는 - 연산자가 없기 때문에 이는 답안 후보에서 제외합니다.
보기 B 를 살펴보면, StringBuffer 형 변수 s 에 "123456789" 값을 지니는 StringBuffer 객체를 만들어 가리키게 합니다. 그 다음 줄에서는, s.delete(0, 3).replace(1, 3, "24").delete(4, 6); 문장이 있는데, 먼저, s.delete(0, 3) 을 보면, 0 번째 ~ 2 번째 (3 - 1) 의 문자열을 삭제하는 것이니, "123456789" -> "456789" 가 됩니다. 그리고 이를 가지고, .replace(1, 3, "24") 를 하면, 1 번째 ~ 2 번째 (3 - 1) 의 문자열을 "24" 로 치환하라는 것이니, "456789" -> "424789" 가 됩니다. 마지막으로, 이를 가지고 .delete(4, 6); 을 하면, 4 번째 ~ 5 번째 (6 - 1) 의 문자열을 삭제하라는 것이니, "424789" -> "4247" 이 됩니다. 따라서 답안 후보가 됩니다.
보기 C 를 살펴보면, StringBuffer 형 변수 s 에 "123456789" 값을 지니는 StringBuffer 객체를 만들어 가리키게 합니다. 그 다음 줄에서는, s.substring(3, 6).delete(1, 3).insert(1, "24"); 문장이 있는데, 먼저, s.substring(3, 6) 을 보면, 3 번째 ~ 5 번째 (6 - 1) 의 문자열을 추출하는 것이니, "123456789" -> "123789" 가 됩니다. 이것은 String 형인데, 바로 그 뒤에 delete 메소드를 호출하고 있습니다. 하지만 String 클래스에는 delete 메소드가 없으므로 compile error 를 발생시킵니다. 따라서 답안 후보에서 제외합니다.
보기 D 를 살펴보면, StringBuilder 형 변수 s 에 "123456789" 값을 지니는 StringBuilder 객체를 만들어 가리키게 합니다. 그 다음 줄에서는, s.substring(3, 6).delete(1, 2).insert(1, "24"); 문장이 있는데, 먼저, s.substring(3, 6) 을 보면, 3 번째 ~ 5 번째 (6 - 1) 의 문자열을 추출하는 것이니, "123456789" -> "123789" 가 됩니다. 이것은 String 형인데, 바로 그 뒤에 delete 메소드를 호출하고 있습니다. 하지만 String 클래스에는 delete 메소드가 없으므로 compile error 를 발생시킵니다. 따라서 답안 후보에서 제외합니다.
보기 E 를 살펴보면, StringBuilder 형 변수 s 에 "123456789" 값을 지니는 StringBuilder 객체를 만들어 가리키게 합니다. 그 다음 줄에서는, s.delete(0, 3).delete(1, 3).delete(2, 5).insert(1, "24"); 문장이 있는데, 먼저, s.delete(0, 3) 을 보면, 0 번째 ~ 2 번째 (3 - 1) 의 문자열을 삭제하라는 것이니, "123456789" -> "456789" 가 됩니다. 그리고 이를 가지고, .delete(1, 3) 를 하면, 1 번째 ~ 2 번째 (3 - 1) 의 문자열을 삭제하는 것이니, "456789" -> "4789" 가 됩니다. 이를 가지고 .delete(2, 5); 을 하면, 2 번째 ~ 4 번째 (5 - 1) 의 문자열을 삭제하라는 것이니, "4789" -> "47" 이 됩니다. 마지막으로, 이를 가지고, .insert(1, "24"); 를 하면, 1 번째에 문자열 "24" 를 삽입하라는 것이니, "46" -> "4247" 이 됩니다. 따라서 답안 후보가 됩니다.
따라서 답안은 B 와 E 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 53 번 (0) | 2015.09.10 |
---|---|
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 52 번 (2) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 51 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 50 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 49 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 47 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 46 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 45 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 44 번 (0) | 2015.09.06 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 43 번 (0) | 2015.09.05 |
RECENT COMMENT