본문 바로가기
Language/JAVA

[JAVA] 자바_equals() 와 == 의 차이점

by 썸머워즈 2019. 6. 12.
반응형

equlas() 와 "=="의 차이점

equlas() 와 "=="는 어떤 차이점이 있을까?

예전에 자바를 배웠을때 그냥 자바에서는 문자열을 비교할 때 무조건 equlas()를 써야해! 라는 말만 듣고 그냥 equals()만 써왔는데, 한번 그 이유에 대해 알아보도록 하자.

 

Java에서는 문자열 즉, String 값을 할당하는 방법이 2가지 존재한다.

String str = new String("JAVA"); 
String str = "JAVA";

이 두 가지 방법을 이용한 예제를 통해 "==" equals()의 차이점을 확인해 보도록 하자.


예제 1) equlas() 와 "==" 비교

public class EqualsTest{
    public static void main(String[] args){
        String a = "JAVA"
        String b = "JAVA"
        String c = new String("JAVA");
        String d = new String("JAVA");

        System.out.println( a == b );  // true        
        System.out.println( b == c );  // false  
        System.out.println( c == d );  // false   

        System.out.println( a.equals(b) );  // true   
        System.out.println( b.equals(c) );  // true   
        System.out.println( c.equals(d) );  // true   
    }
}

왜 위와같은 결과들이 나오는 걸까?

 

"==" 비교 연산자는 주소값을 비교하고

equlas() 메서드는 내용 자체를 비교 즉, 데이터 값을 비교하기 때문에다.

 

결론은 그냥 안정적으로 문자열을 비교하고자 한다면 equlas() 메서드를 사용하는게 맞다고 생각된다.

반응형


댓글

TOP