Computer Science/정보처리기사
[정처기 실기 기출] 2024 3회 : 자바 코드 분석 문제
안세현
2025. 4. 13. 17:46
728x90
반응형
🎉 문제 풀이: 2024 3회 정처기 실기 : 자바 코드 분석 🎉
🧐 문제 분석
주어진 코드에서 String[] 배열의 값들을 비교하고 결과를 출력하는 동작을 파헤쳐 보자.
func 메소드의 기능 👀 :
- 배열의 값들을 하나씩 비교해서, 같으면 "O", 다르면 "N"을 출력!
- 배열의 모든 값을 하나씩 출력!
🧩 코드 분석
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
반응형