Oracle 1z0-808 Exam: Question #10 해설
질문 원본 내용
Given the following code:
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Java");
String s = "Java";
if (sb.toString().equals(s.toString())) {
System.out.println("Match 1");
} else if (sb.equals(s)) {
System.out.println("Match 2");
} else {
System.out.println("No Match");
}
}
What is the result?
A. Match 1
B. Match 2
C. No Match
D. A NullPointerException is thrown at runtime.
질문 번역
다음은 Java의 String
과 StringBuilder
클래스를 사용하는 코드 예시입니다:
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Java");
String s = "Java";
if (sb.toString().equals(s.toString())) {
System.out.println("Match 1");
} else if (sb.equals(s)) {
System.out.println("Match 2");
} else {
System.out.println("No Match");
}
}
코드를 실행했을 때 결과는 무엇일까요?
A. Match 1
B. Match 2
C. No Match
D. 런타임에 NullPointerException이 발생합니다.
정답: A. Match 1
해설
이 코드는 StringBuilder
인스턴스인 sb
와 String
인스턴스인 s
를 비교합니다. 먼저 sb.toString()
을 호출하여 StringBuilder
객체를 String
객체로 변환하고, s.toString()
을 호출하여 String
객체의 문자열 값을 얻습니다. String
클래스의 toString()
메소드는 객체 자신을 반환하기 때문에 s.toString()
은 단순히 s
와 같습니다. 따라서 sb.toString()
과 s
(또는 s.toString()
)는 같은 문자열 값을 가지므로 .equals
메소드는 true
를 반환하고 "Match 1"을 출력합니다.
두 번째 else if
조건에서는 StringBuilder
객체 sb
와 String
객체 s
를 직접 비교합니다. StringBuilder
의 .equals
메소드는 오버라이드되지 않아 객체 참조의 동등성을 비교합니다. 즉, 두 객체가 메모리 내에서 같은 객체를 참조하고 있어야 true
를 반환합니다. sb
와 s
는 서로 다른 객체이므로 이 비교는 false
입니다.
NullPointerException
은 이 코드에서 발생하지 않습니다. 모든 메소드 호출이 유효한 객체 인스턴스에 대해 수행되기 때문에 예외가 발생하지 않습니다.
결과적으로, 정답은 A이며, "Match 1"이 출력됩니다.
'Oracle 1z0-808 Exam' 카테고리의 다른 글
Oracle 1z0-808 Exam 2024: Question #11 (0) | 2024.02.23 |
---|---|
Oracle 1z0-808 Exam 2024: Question #9 (0) | 2024.02.21 |
Oracle 1z0-808 Exam 2024: Question #8 (0) | 2024.02.20 |
Oracle 1z0-808 Exam 2024: Question #7 (0) | 2024.02.19 |
Oracle 1z0-808 Exam 2024: Question #6 (0) | 2024.02.19 |
댓글