Oracle 1z0-808 Exam: Question #4 해설
질문 원본 내용
Consider the following code:
public static void main(String[] args) {
Short s1 = 200;
Integer s2 = 400;
Long s3 = (long) s1 + s2; // line n1
String s4 = (String) (s3 * s2); // line n2
System.out.println("Sum is " + s4);
}
What is the result?
A. Sum is 600
B. Compilation fails at line n1.
C. Compilation fails at line n2.
D. A ClassCastException is thrown at line n1.
E. A ClassCastException is thrown at line n2.
질문 번역
다음은 Java 코드의 예시입니다:
public static void main(String[] args) {
Short s1 = 200;
Integer s2 = 400;
Long s3 = (long) s1 + s2; // line n1
String s4 = (String) (s3 * s2); // line n2
System.out.println("Sum is " + s4);
}
코드를 실행했을 때 결과는 무엇일까요?
A. Sum is 600
B. line n1에서 컴파일 실패
C. line n2에서 컴파일 실패
D. line n1에서 ClassCastException 발생
E. line n2에서 ClassCastException 발생
정답: C. line n2에서 컴파일 실패
해설
이 코드를 분석해 보면 다음과 같습니다:
Short
과Integer
객체를 사용하여 두 수를 더하는 연산을 수행합니다. Java에서는 덧셈 연산 시Short
과Integer
를int
기본형으로 언박싱합니다. 이후 연산 결과는Long
객체로 박싱됩니다. 따라서 line n1은 문제없이 컴파일됩니다.- line n2에서는
Long
객체s3
와Integer
객체s2
를 곱하고 있습니다. 이 연산의 결과는long
기본형 값이 됩니다. 그런데 여기서는long
타입의 결과를String
으로 캐스팅하려고 하고 있습니다. 기본형 타입을 직접String
객체로 캐스팅하는 것은 자바에서 허용되지 않으므로, 이 라인에서 컴파일 오류가 발생합니다. long
타입을String
으로 변환하려면String.valueOf()
메소드나Long.toString()
같은 메소드를 사용하거나, 문자열 연결 연산을 사용해야 합니다. 예를 들어,"" + (s3 * s2)
는long
값을String
으로 변환합니다.ClassCastException
은 객체 타입 캐스팅이 잘못되었을 때 발생하는 런타임 예외이며, 이 경우에는 컴파일 단계에서 이미 오류가 발생하기 때문에 런타임에 도달하지 않습니다.
따라서 정답은 C. line n2에서 컴파일 실패입니다.
나머지 선택지에 대한 해설:
- A. "Sum is 600"은 실제 연산 결과가 아닙니다. 연산은 정상적으로 수행되지만 결과를
String
으로 변환하는 과정에서 오류가 발생합니다. - B. line n1에서 컴파일이 실패하는 것은 아닙니다.
s1
과s2
는 자동으로 언박싱되고 연산 후long
타입의 결과가Long
객체로 올바르게 박싱됩니다. - D와 E.
ClassCastException
은 잘못된 타입으로 객체를 캐스팅하려고 할 때 발생하는 런타임 예외입니다. 이 코드의 경우, 캐스팅 문제는 기본형 타입과 관련된 컴파일 타임 오류로 인해 발생합니다.
'Oracle 1z0-808 Exam' 카테고리의 다른 글
Oracle 1z0-808 Exam 2024: Question #6 (0) | 2024.02.19 |
---|---|
Oracle 1z0-808 Exam 2024: Question #5 (0) | 2024.02.18 |
Oracle 1z0-808 Exam 2024: Question #3 (1) | 2024.02.18 |
Oracle 1z0-808 Exam 2024: Question #2 (0) | 2024.02.18 |
Oracle 1z0-808 Exam 2024: Question #1 (2) | 2024.02.18 |
댓글