[JAVA] 비교 연산자

1. 동등연산자(==) : 두 값이 같은지 확인합니다. 예를 들어, x == y는 변수 x와 y의 값이 서로 같으면 참(true)을 반환합니다.

2. 부등연산자(!=) : 두 값이 같지 않은지 확인합니다. x != y는 x와 y의 값이 서로 다르면 참(true)을 반환합니다.

3. (>) 연산자 : 왼쪽의 값이 오른쪽 값보다 큰지 확인합니다. x > y는 x가 y보다 크면 참(true)을 반환합니다.

4. (<) 연산자 : 왼쪽의 값이 오른쪽 값보다 작은지 확인합니다. x < y는 x가 y보다 작으면 참(true)을 반환합니다.

5.(>=) 연산자 : 왼쪽의 값이 오른쪽 값보다 크거나 같은지 확인합니다. x >= y는 x가 y보다 크거나 같으면 참(true)을 반환합니다.

6. (<=) 연산자: 왼쪽의 값이 오른쪽 값보다 작거나 같은지 확인합니다. x <= y는 x가 y보다 작거나 같으면 참(true)을 반환합니다.

 

주의 사항

비교 연산자를 사용할 때 데이터의 타입과 동등 연산(==)의 경우에는 데이터의 값 뿐만 아니라 타입도 고려해야 합니다. 또한, 부동소수점 연산에서는 값의 정확성을 고려하여 비교하는 것이 중요합니다.

 

문자열 비교

public class Example {
    public static void main(String[] args) {
        String str1 = "apple";
        String str2 = "banana";
        String str3 = "apple";
        String str4 = "Apple";
        // new String()을 사용하여 새로운 인스턴스 생성
        String str5 = new String("Apple");

        // 동등 비교
        boolean isEqual = str1.equals(str2);
        System.out.println("str1.equals(str2): " + isEqual); // 출력: false

        isEqual = str1.equals(str3);
        System.out.println("str1.equals(str3): " + isEqual); // 출력: true

        // 부등 비교
        boolean isNotEqual = !str1.equals(str2);
        System.out.println("!str1.equals(str2): " + isNotEqual); // 출력: true

        // compareTo() 메서드 활용 (사전 순 비교)
        int result = str1.compareTo(str2);
        System.out.println("str1.compareTo(str2): " + result); // 출력: 음수

        result = str2.compareTo(str1);
        System.out.println("str2.compareTo(str1): " + result); // 출력: 양수

        result = str1.compareTo(str3);
        System.out.println("str1.compareTo(str3): " + result); // 출력: 0
        
        // equalsIgnoreCase() 메서드를 사용한 대소문자 무시한 비교
        boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str4);
        System.out.println("str1.equalsIgnoreCase(str4): " + isEqualIgnoreCase); // 출력: true
		
        boolean isEqualNewString = str4.equals(str5);
        System.out.println("str4.equals(str5): " + isEqualNewString); // 출력: true

        boolean isSameReference = str4 == str5;
        System.out.println("str4 == str5: " + isSameReference); // 출력: false
        
        isSameReference = str1 == str3;
        System.out.println("str1 == str3: " + isSameReference); // 출력: true
    }
}

== 연산자는 두 객체의 참조(메모리 주소)를 비교하는 연산자입니다. 그래서 내용이 같더라도 새로운 인스턴스를 생성했으니 false가 반환됩니다.

String 클래스의 문자열 리터럴은 Java의 문자열 풀(String Pool)에서 관리됩니다. 문자열 리터럴이 동일한 경우, 같은 메모리 위치(주소)를 가리키게 됩니다. 그래서 str1 == str3이 true가 반환되는 이유입니다.