Computer Science/정보처리기사

[정처기 실기 기출] 2024 3회 : 자바 코드 분석 문제

안세현 2025. 4. 13. 17:46
728x90
반응형

 

🎉 문제 풀이: 2024 3회 정처기 실기 : 자바 코드 분석 🎉

🧐 문제 분석

주어진 코드에서 String[] 배열의 값들을 비교하고 결과를 출력하는 동작을 파헤쳐 보자.

func 메소드의 기능 👀 :

  1. 배열의 값들을 하나씩 비교해서, 같으면 "O", 다르면 "N"을 출력!
  2. 배열의 모든 값을 하나씩 출력! 

🧩 코드 분석

public class Main {
    static String[] s = new String[3];

    static void func(String[] s, int size) {
        for (int i = 1; i < size; i++) {
            if (s[i - 1].equals(s[i])) {
                System.out.print("O");
            } else {
                System.out.print("N");
            }
        }
        for (String m : s) {
            System.out.print(m);
        }
    }

    public static void main(String[] args) {
        s[0] = "A";
        s[1] = "A";
        s[2] = new String("A");
        func(s, 3);
    }
}

1️⃣ String 비교, 그 비밀은? 🤫

String 객체를 비교할 때 ==를 쓰면 안 됩니다!! 👀

==는 객체의 주소를 비교하는 거라, 두 String이 내용은 같지만 메모리에서 다를 수 있습니ㅏㄷ.

대신, equals()를 써야 해요!

equals()는 두 문자열의 내용이 같은지 비교한답니다. 이렇게 비교하면 정확하게 내용이 일치하는지 알 수 있죠! 😉

2️⃣ 배열의 내용은?

s[0] = "A";
s[1] = "A";
s[2] = new String("A");
  • s[0]과 s[1]은 동일한 문자열 "A"를 참조하고 있어요.
  • 그런데 s[2]는 new String("A")로 생성한 새로운 객체예요.
    이 객체는 내용은 같지만, 메모리에서 따로따로 존재하는 다른 객체라서 좀 특별해요!

3️⃣ func 메소드가 하는 일! 🔍

func 메소드는 두 요소를 하나씩 비교하면서 "O"나 "N"을 출력!

배열 s의 s[0]과 s[1]은 "A"로 같아서 "O"를 출력!

그다음, s[1]과 s[2]도 다른 객체지만 같은 내용이여서 "O"를 출력!

4️⃣ 그리고 마지막 배열 출력! 🎯

배열 s를 출력하면 "AA A"가 나온다.

여기서 주의할 점은, s[2]가 "A"와 같은 내용이지만 새로운 객체라는 것! 이게 중요한 포인트죠! 😆

📣 최종 출력은...?

자, 그럼 최종적으로 출력되는 건:

OOAAA

 

🎈 결론 🎈

이번 문제에서 중요한 점은 String 비교할 때 equals()를 꼭 써야 한다는 거!

그리고 new String()으로 만든 객체는 내용은 같지만, 주소는 다르다는 사실-! 🤩

728x90
반응형