본문 바로가기
개발유용한것모음/Java

문자열의 비교 로직중 큰문자열과 작은 문자열을 비교할때 놓치기 쉬운것

by 코딩하는 노씨 2026. 6. 23.
반응형

회사에서 일하다가 놓치기 쉬운점인것같아 간단하게 정리해본다

문자열비교는 아걍 포함되면 true겠지했는데 생각해보면 당연한거지만 그래도 놓치기 쉽지않을까? 해서 정리해본다

 

사람의 직관으로는 '사회(역사/도덕포함)'이 결국 '사회' 과목의 한 종류니까 당연히 의미상 포함(true)된다고 생각하게 되죠.
하지만 자바(Java)의 컴퓨터는 사람처럼 '개념'이나 '의미'로 포함 여부를 판단하지 않고, 물리적인 글자의 크기(길이)와 순서만 봅니다.

class Main {
    public static void main(String[] args) {
        String shortText = "사회";               // 작은 상자 (2글자)
        String longText = "사회(역사/도덕포함)"; // 큰 물건 (11글자)

        System.out.println("=== 1. 기존 코드 방식 (오류 발생) ===");
        // 의도: "사회"라는 카테고리 안에 "사회(역사/...)"가 포함되는가?
        // 실제 컴퓨터의 처리: "사회"라는 2글자 안에 11글자가 다 들어가는가?
        boolean result1 = shortText.contains(longText);
        System.out.println("결과: " + result1); // false 출력


        System.out.println("\n=== 2. 뒤집은 방식 (정상 작동) ===");
        // 컴퓨터의 처리: "사회(역사/...)"라는 11글자 안에 "사회"라는 2글자가 포함되어 있는가?
        boolean result2 = longText.contains(shortText);
        System.out.println("결과: " + result2); // true 출력
    }
}

 

반응형