728x90
반응형
1️⃣ String 객체 비교 문제
문제: 아래 코드의 출력 결과를 예측하자! 💭
public class Main {
public static void main(String[] args) {
String str1 = new String("Hello");
String str2 = new String("Hello");
String str3 = "Hello";
System.out.println(str1 == str2); // 1
System.out.println(str1 == str3); // 2
System.out.println(str1.equals(str2)); // 3
System.out.println(str2.equals(str3)); // 4
}
}
🔍 풀이:
- str1 == str2: false!
new 키워드로 생성된 str1과 str2는 서로 다른 객체임! 주소가 다르니까 ==로 비교하면 false! - str1 == str3: false!
str3은 리터럴로 생성되었고 str1은 new로 생성되었음. 주소가 다르니까 ==로 비교하면 false! - str1.equals(str2): true!
equals()는 내용 비교! 두 문자열 "Hello"는 똑같으니까 true! - str2.equals(str3): true!
"Hello"끼리 비교하니까 역시 true!
결과:
false
false
true
true
2️⃣ 배열 탐색 문제
문제: 배열에서 중복된 숫자가 있으면 "중복 있음"을, 없으면 "중복 없음"을 출력하자!
public class Main {
public static void main(String[] args) {
int[] arr = {3, 5, 7, 3, 8, 9};
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
System.out.println("중복 있음");
return;
}
}
}
System.out.println("중복 없음");
}
}
🔍 풀이:
- 배열을 하나하나 두 번 비교하면서, 숫자들이 중복되는지 확인!
- 만약 중복되는 숫자가 있다면 "중복 있음"을 출력하고 종료. 중복이 없다면 마지막에 "중복 없음"을 출력!
결과:
중복 있음
왜냐면 배열에서 3이 중복되니까요! 😎
3️⃣ ArrayList 성능 문제
문제: ArrayList에서 조건에 맞는 요소를 삭제하면 어떻게 될까요?
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
for (int i = 0; i < list.size(); i++) {
if (list.get(i) % 2 == 0) {
list.remove(i);
}
}
System.out.println(list);
}
}
🔍 풀이:
- ArrayList에서 요소 삭제 시, 삭제하면 크기가 변하기 때문에 인덱스가 엉망이 될 수 있어요!
- 이 코드에서 삭제 후 인덱스가 뒤로 밀리는 문제가 발생합니다.
예를 들어, 2를 지우면 3이 밀려오고, i++로 인덱스가 계속 증가하니 한 번만 건너뛰게 돼요!
하지만 원하는 결과는 얻을 수 있죠!
결과:
[1, 3, 5, 7, 9]
4️⃣ 배열 정렬 문제
문제: 배열을 정렬하면 어떻게 될까?
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {3, 5, 2, 8, 1};
Arrays.sort(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
🔍 풀이:
- Arrays.sort()로 배열을 오름차순 정렬합니다!
- 정렬 후 배열은 [1, 2, 3, 5, 8]이 됩니다!
결과:
1 2 3 5 8
정렬된 후 값들이 작은 순서대로 정렬되었어요! 🏅
5️⃣ 예외 처리 문제
문제: 예외 처리에서 finally 블록은 언제 실행될까요?
public class Main {
public static void main(String[] args) {
try {
String str = null;
System.out.println(str.length());
} catch (NullPointerException e) {
System.out.println("NullPointerException 발생");
} finally {
System.out.println("finally 블록 실행");
}
}
}
🔍 풀이:
- str이 null이어서 NullPointerException이 발생하고, catch 블록에서 "NullPointerException 발생"이 출력됩니다.
- 그 후 finally 블록은 예외와 관계없이 항상 실행되며 "finally 블록 실행"이 출력됩니다!
결과:
NullPointerException 발생
finally 블록 실행
finally 블록은 항상 실행되니 꼭 기억하세요! 💡
728x90
반응형
'Computer Science > 정보처리기사' 카테고리의 다른 글
[정처기 실기 기출] 2024 3회 : 파이썬 코드 분석 예상 문제 (0) | 2025.04.13 |
---|---|
[정처기 실기 기출] 2024 3회 : 파이썬 코드 분석 문제 (0) | 2025.04.13 |
[정처기 실기 기출] 2024 3회 : 자바 코드 분석 추가 예제 (0) | 2025.04.13 |
[정처기 실기 기출] 2024 3회 : 자바 코드 분석 문제 (0) | 2025.04.13 |