모두CBT

24-3아래 Java 프로그램이 콘솔에 찍는 결과를 적으시오.publi… | 2024년 정보처리기사실기 3회차 기출문제 상세 페이지

3

24-3

아래 Java 프로그램이 콘솔에 찍는 결과를 적으시오.

public class Main {
    static void check(String[] w) {
        for (int k = 1; k < w.length; k++) {
            if (w[k].equals(w[k - 1]))
                System.out.print("Y");
            else
                System.out.print("X");
        }
        for (String t : w)
            System.out.print(t);
    }
    public static void main(String[] args) {
        String[] w = new String[4];
        w[0] = "K";
        w[1] = new String("K");
        w[2] = "k";
        w[3] = new String("k");
        check(w);
    }
}
해설

YXYKKkk


[해설]

equals()는 참조 주소가 아니라 문자열 내용을 비교하므로, new String으로 만든 객체도 내용이 같으면 참이다.

  • k=1: "K"와 new String("K") → 내용 같음 → "Y"
  • k=2: "k"와 "K" → 대소문자가 달라 → "X"
  • k=3: new String("k")와 "k" → 내용 같음 → "Y"

이어서 향상된 for문이 네 원소를 그대로 이어 찍어 "KKkk"가 붙는다. 최종 출력은 YXYKKkk다.

비교를 == 로 했다면 k=1, k=3은 서로 다른 객체라 "X"가 된다. 이 차이가 문항의 핵심이다.

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