[Java] 문자열 비교하기 == , equals() 의 차이점

    Java에서 문자열을 비교하는 방법으로는 == 연산자와 equals() 메소드가 있습니다. 이 둘은 서로 다른 방식으로 문자열을 비교합니다. == 연산자는 두 개의 객체가 동일한 객체인지 여부를 비교하며, equals() 메소드는 두 개의 객체의 내용이 동일한지 여부를 비교합니다. 따라서, Java에서 문자열을 비교할 때는 내용을 비교해야 하는 경우에는 equals() 메소드를 사용하는 것이 좋습니다. 만약 동일한 객체를 참조하는지 여부를 판단해야 하는 경우에는 == 연산자를 사용하면 됩니다.

    이 글에서는 Java에서 문자열 비교를 위해 == 연산자와 equals() 메소드를 사용하는 방법과 이 둘의 차이점에 대해 설명합니다.

    1. == 연산자

    == 연산자는 두 객체의 참조값을 비교합니다. 즉, == 연산자는 두 객체가 동일한 메모리 위치를 가리키는지 여부를 판단합니다. 따라서, 같은 객체를 참조하고 있는 경우에만 true를 반환하고, 객체의 내용이 같더라도 참조값이 다른 경우에는 false를 반환합니다.

    String str1 = "hello";
    String str2 = "hello";
    String str3 = new String("hello");
    
    System.out.println(str1 == str2); // true
    System.out.println(str1 == str3); // false

    위의 코드에서 str1과 str2는 모두 같은 문자열 리터럴을 참조하고 있으므로 == 연산자를 사용하여 비교하면 true가 반환됩니다. 반면 str1과 str3은 서로 다른 객체를 참조하므로 == 연산자를 사용하여 비교하면 false가 반환됩니다.

    2. equals() 메소드

    equals() 메소드는 두 객체의 내용이 같은지 여부를 비교합니다. 따라서, 두 객체의 내용이 같으면 true를 반환하고, 내용이 다르면 false를 반환합니다. equals() 메소드는 Object 클래스에서 정의되어 있으므로, 모든 객체에서 사용할 수 있습니다.

    String str1 = "hello";
    String str2 = "hello";
    String str3 = new String("hello");
    
    System.out.println(str1.equals(str2)); // true
    System.out.println(str1.equals(str3)); // true

    위의 코드에서 str1과 str2는 모두 같은 문자열 리터럴을 참조하고 있으므로 equals() 메소드를 사용하여 비교하면 true가 반환됩니다. str1과 str3은 서로 다른 객체를 참조하지만 내용이 같으므로 equals() 메소드를 사용하여 비교하면 true가 반환됩니다.

    결론

    따라서, 객체의 내용이 같은지 여부를 비교할 때는 equals() 메소드를 사용하는 것이 좋습니다. 객체의 참조값이 같은지 여부를 판단해야 하는 경우에는 == 연산자를 사용하면 됩니다.

    '코딩 > Java' 카테고리의 다른 글

    [JAVA] Array 배열 선언과 사용 1  (0) 2020.02.16
    [JAVA] 로또 프로그램  (0) 2020.02.14
    [JAVA] 문자열 공백 제거 방법 5가지  (0) 2020.02.08
    [JAVA] IF문 학점구하기  (0) 2020.02.07
    [JAVA] 형변환 Casting 사용하기  (0) 2020.02.06

    댓글

    Designed by JB FACTORY