정보처리기사 실기JavaJava 객체 참조난이도 3MCQ

정보처리기사 실기 Java 객체 참조 기출문제 #3895

문제

다음 Java 코드의 출력 결과는?

Java
public class Main{ public static class BO { public int v; public BO(int v) { this.v = v; } } public static void main(String[] args) { BO a = new BO(1); BO b = new BO(2); BO c = new BO(3); BO[] arr = {a, b, c}; BO t = arr[0]; arr[0] = arr[2]; arr[2] = t; arr[1].v = arr[0].v; System.out.println(a.v + "a" + b.v + "b" + c.v); } }

① 1a3b3 ② 3a2b1 ③ 1a2b3 ④ 3a3b1

정답

1

해설

정답: 1. arr[0]과 arr[2]의 참조가 교환되어 arr[0]은 c를 가리킨다. 이후 arr[1].v, 즉 b.v에 arr[0].v인 3이 대입된다. a.v=1, b.v=3, c.v=3이므로 1a3b3이 출력된다.

오답 풀이

  • 1번: 참조 교환과 객체 필드 변경을 올바르게 반영했다.
  • 2번: a와 c 객체 자체의 값이 바뀐 것으로 오해한 결과이다.
  • 3번: b.v 변경을 누락한 값이다.
  • 4번: a.v와 c.v를 잘못 계산했다.

보충 개념 Java 배열에 객체를 저장하면 객체 자체가 아니라 참조가 저장된다. 배열 원소 교환은 참조 교환이며, 참조를 통해 필드를 변경하면 실제 객체 값이 바뀐다.

정보처리기사 실기 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] Java 객체 참조 Java 기출 #3895 | 문어CBT