hanker

JAVA - 값 비교 (문자열 / 숫자 등등) 본문

JAVA

JAVA - 값 비교 (문자열 / 숫자 등등)

hanker 2024. 11. 8. 00:21
반응형

Java에서 값 비교는 여러 가지 방법으로 수행하게 되는데,

기본적으로 값 비교는 두 가지(기본 데이터 타입(primitive type), 객체(Object))로 나뉜다.

 

각 경우의 비교 방식을 알아보자

 

 

기본 데이터 타입(Primitive Type)

 

기본 데이터 타입은 int, char, boolean, float, double 등의 타입을 포함하며, == 연산자를 사용해 값을 비교한다.

public static void main(String[] args) {
    String a = "hanker";
    String b = "hanker2";

    if (a == b) {
        System.out.println("a와 b는 같습니다.");
    } else {
        System.out.println("a와 b는 다릅니다.");
    }
}

 

반응형

 

객체(Object) 타입

 

객체의 경우, == 연산자는 두 객체의 참조(reference)를 비교한다. 

즉, 두 변수가 같은 메모리 주소를 가리키는지를 확인하는데, 객체의 실제 값(내용)을 비교하려면 .equals() 메서드를 사용해야 한다.

public static void main(String[] args) {
    String str1 = new String("hanker");
    String str2 = new String("hanker");

    if (str1 == str2) {
        System.out.println("str1과 str2는 같은 객체입니다.");
    } else {
        System.out.println("str1과 str2는 다른 객체입니다.");
    }

    if (str1.equals(str2)) {
        System.out.println("str1과 str2의 값이 같습니다.");
    } else {
        System.out.println("str1과 str2의 값이 다릅니다.");
    }
}

 

==: 객체의 주소(참조)를 비교

.equals(): 객체의 값(내용)을 비교

 

 

 

문자열 비교 시 주의사항

Java에서 문자열 비교는 매우 많이 사용된다. == 연산자를 사용하면 의도치 않게 참조 비교가 될 수 있으므로 항상 .equals() 메서드를 사용해 문자열 값을 비교하는 것이 좋다.

public static void main(String[] args) {
    String s1 = "hanker";
    String s2 = "hanker";

    System.out.println(s1 == s2);       // true (같은 리터럴이므로 같은 참조)
    System.out.println(s1.equals(s2));  // true (값 비교)
}

 

 

 

 

정리

 

- 기본 타입 비교 시 == 연산자 사용

- 객체의 값 비교 시 .equals() 메서드 사용

- 문자열 비교 시 .equals() 사용이 안전

- 사용자 정의 클래스는 equals()와 hashCode()를 적절히 오버라이드해야 객체의 올바른 값 비교가 가능

 

반응형