모두CBT

22-1다음 Java 프로그램을 실행했을 때 출력되는 값을 적으시오.c… | 2022년 정보처리기사실기 1회차 기출문제 상세 페이지

3

22-1

다음 Java 프로그램을 실행했을 때 출력되는 값을 적으시오.

class Pair {
    int p;
    int q;
}

public class Main {
    static void triple(Pair t) {
        t.p *= 3;
    }

    static void absorb(Pair t) {
        t.q += t.p;
    }

    static void reset(Pair t) {
        t = new Pair();
        t.p = 0;
    }

    public static void main(String[] args) {
        Pair s = new Pair();
        s.p = 15;
        triple(s);
        s.q = s.p - 5;
        absorb(s);
        reset(s);
        System.out.print(s.p + s.q);
    }
}
해설

130


[해설]

메서드에는 객체의 참조값이 복사되어 전달되므로, 매개변수로 필드를 바꾸면 main의 s 객체가 직접 바뀐다.

  • triple(s): p = 15 × 3 = 45
  • s.q = 45 − 5 = 40
  • absorb(s): q = 40 + 45 = 85
  • reset(s): 매개변수 t가 새 객체를 가리키게 될 뿐, s는 그대로

reset 안에서 참조 자체를 바꾼 것은 호출한 쪽에 영향이 없다. 따라서 45 + 85 = 130이 출력된다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.