24-2아래 Java 프로그램이 콘솔에 찍는 문자열을 적으시오.publ… | 2024년 정보처리기사실기 2회차 기출문제 상세 페이지
17
24-2
아래 Java 프로그램이 콘솔에 찍는 문자열을 적으시오.
public class Main {
static void same(int[] p, int[] q) {
System.out.print(p == q ? "Y" : "-");
}
public static void main(String[] args) {
int[] x = {5, 7, 9};
int[] y = {5, 7, 9};
int[] z = x;
same(x, y);
same(x, z);
same(y, new int[]{5, 7, 9});
z[0] = 8;
System.out.print(x[0]);
}
}해설
-Y-8
[해설]
배열 변수에 쓰는 == 는 원소 값이 아니라 참조(주소)가 같은지를 비교한다.
- same(x, y)는 내용은 같아도 따로 만든 두 객체라 "-"를 찍는다.
- same(x, z)는 z = x로 같은 객체를 가리켜 "Y"를 찍는다.
- same(y, new int[]{5, 7, 9})는 새로 만든 객체와 비교하므로 "-"를 찍는다.
- z[0] = 8은 같은 배열을 가리키는 x[0]도 바꾸므로 8이 찍힌다.
최종 출력은 -Y-8이다. 원소 값끼리 비교하려면 Arrays.equals(x, y)를 쓴다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.