[Java] 문자열 비교와 객체 생성 차이

Posted by nkjok
2025. 1. 29. 15:12 낙서장[1]/91. Java
반응형

문자열 비교와 객체 생성 차이(Java)

문자열 비교 예제

  1. 문자열을 비교한다:
    package JavaApp.chap_03;
    
    public class StringComparisonExample {
        public static void main(String[] args) {
            // 문자열 비교
            String s1 = "Java";
            String s2 = "Python";
    
            System.out.println(s1.equals(s2)); // 문자열 내용이 같으면 true, 다르면 false
            System.out.println(s1.equals("Java")); // true
            System.out.println(s2.equals("python")); // false
    
            // 대소문자 구분 없이 문자열 내용이 같은지 여부를 확인한다
            System.out.println(s2.equalsIgnoreCase("python")); // true
        }
    }
    
  2. 문자열 비교를 심화한다:
    public class StringDeepComparisonExample {
        public static void main(String[] args) {
            // 문자열 비교 심화
            String s1 = "1234"; // 벽에 붙은 메모지의 비밀번호 정보
            String s2 = "1234";
            System.out.println(s1.equals(s2)); // true
            System.out.println(s1 == s2); // true
    
            s1 = new String("1234");
            s2 = new String("1234");
            System.out.println(s1 == s2); // false
            System.out.println(s1.equals(s2)); // true
        }
    }
    

new String() 객체 생성 시 차이점

  • == 연산자는 두 객체가 동일한 메모리 주소를 참조하고 있는지를 비교한다. 예제에서 new String("1234")로 생성한 두 문자열은 서로 다른 메모리 주소를 참조하므로 == 비교에서는 false가 반환된다.
  • equals() 메서드는 두 문자열의 내용이 동일한지를 비교한다. 따라서 new String("1234")로 생성한 문자열이라도 내용이 같으면 equals() 비교에서는 true가 반환된다.

출력결과

반응형