현재 선택한 정보처리 과정

정보처리기사 실기 이론 학습

이론 목록으로 돌아가기

Java 문자열·예외

문자열 비교와 예외 처리의 실행 경로를 구분한다.

예상 읽기 4

실기 학습 목표

문자열 비교와 예외 처리의 실행 경로를 구분한다.

핵심 이론

String은 불변이며 concat·replace·substring 결과를 받아야 변경된 문자열을 쓸 수 있다. ==는 참조, equals는 내용 비교다. 문자열 리터럴 풀과 new String(...)을 구별한다.

예외가 발생하면 해당 위치 이후의 try 본문을 건너뛰고 가장 먼저 맞는 catch를 찾는다. 하위 예외 catch는 상위 예외 catch보다 앞에 둔다.

finally는 정상 종료·예외·return 경로에서 일반적으로 실행된다. 시스템 강제 종료 등까지 반드시 실행된다고 단정하지 않는다. finally의 return은 앞선 return·예외를 덮을 수 있어 출력 추적에서 별도 확인한다.

throw는 예외를 발생시키고 throws는 메서드 선언에 전파 가능성을 표시한다. 체크 예외와 RuntimeException 계열의 비체크 예외를 비교한다.

개념 도식

좌우로 이동해 그림을 확인하세요.그림 크게 보기
Java 문자열·예외의 관계와 흐름을 보여 주는 도식
Java 문자열·예외의 관계와 흐름을 보여 주는 도식

문자열의 내용 비교와 계산 순서

String의 ==는 같은 객체 참조인지를, equals는 문자열 내용이 같은지를 비교한다. 문자열 상수 공유 때문에 어떤 == 비교가 참이 되더라도 내용 비교의 일반 원칙을 ==로 바꾸지 않는다. new String("A")처럼 별도 객체를 만들었다는 단서를 확인한다.

1+2+"A"는 왼쪽의 정수 덧셈이 먼저여서 3A, "A"+1+2는 문자열 연결이 이어져 A12가 된다. char끼리의 +는 숫자 승격이 일어날 수 있으므로 문자열과 문자 표기를 구분한다.

예외가 발생한 뒤의 실행 경로

  1. try를 순서대로 실행하다 예외가 발생하면 try의 남은 문장을 건너뛴다.
  2. 호환되는 catch를 찾아 실행한다. 여러 catch가 모두 실행되는 것은 아니다.
  3. 일반적인 제어 흐름에서 finally를 실행한 뒤 다음 문장 또는 반환으로 이어진다.

try에서 return x가 정해진 뒤 finally에서 x만 바꾸는 것과 finally가 별도의 return을 실행하는 것은 다르다. 전자는 이미 평가한 반환값을 그대로 돌려주고, 후자는 반환을 덮을 수 있다. 출력 문제는 try·catch·finally별 출력 칸을 마련하면 예외 때문에 생략된 문자열을 잘못 더하는 실수를 줄일 수 있다.

풀이 예시

다음 Java 17 프로그램이 표준 출력에 기록하는 내용을 쓰시오. 마지막 줄바꿈의 유무는 답안에서 구별하지 않는다.

JAVA코드 영역 안에서 좌우로 이동할 수 있습니다.
public class Main {
    public static void main(String[] args) {
        String base = "cat";
        String[] words = {base, new String(base), "dog"};
        int sameRef = 0, sameText = 0;
        for (String word : words) {
            if (word == base) sameRef++;
            if (word.equals(base)) sameText++;
        }
        System.out.println(sameRef + "/" + sameText);
    }
}

예시 정답

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
1/2

풀이 과정

base를 그대로 넣은 첫 원소만 동일 참조이다. new String(base)는 내용이 같지만 별도 객체이므로 equals에만 포함된다. dog는 둘 다 아니다. 결과는 1/2이다.

답안 점검

위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.