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"가 된다. 이 차이가 문항의 핵심이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.