본문으로 바로가기

[Java] equals ( == 차이점)

category Program/Java 2016. 11. 4. 16:09

※ Java equals ( == 차이점)



equals

 

Object 클래스의 equals메서드를 상속받은 각 클래스에서 오버라이드 된 것을 사용한다. (예를들어 String 클래스)


"비교연산자"인 "==" 역시 두 값을 비교하여 boolean type을 리턴하지만 아래와 같은 차이점이 있음.

 

equals    > 객체가 가지고 있는 을 비교  


==        >  객체의 메모리 주소 비교 (동일한 객체인지)


(String 기준)



+ 예제



 

1
2
3
4
5
6
7
8
9
10
11
12
13
String s1 = "test";
String s2 = a;
String s3 = new string ("test");
 
// 객체의 값비교  (값은 모두 test로 동일)
System.out.println(s1.equals(s1));  // true
System.out.println(s1.equals(s3));  // true
System.out.println(s2.equals(s3));  // true
 
// 객체비교(메모리주소)  
System.out.println(s1==s2); //true 
System.out.println(s1==s3); //false
System.out.println(s2==s3); //false
cs

 

equals 메서드 사용시 주의할 점은 앞에 기재한 객체,문자열이 비교 주체가 되므로

s1.equals(s2) 로 사용했을때 s1객체의 참조가 null이라면 에러 발생함.

 

따라서 null처리가 확실하지 않다면 비교문자열을 앞에 사용하기를 권장 (꼭 그럴필욘 없음..)

 

1
2
3
4
5
6
String s1= null
String s2 = ""
      
System.out.println(s1.equals(s2)); //  Exception
System.out.println(s2.equals(s1)); //  false
System.out.println("".equals(s2)); //  true 
cs

  


Reference

 ( JAVA7 API docs )

http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)

Object 클래스의 equals 메서드 문서

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)

- Object 클래스를 상속받은 String 클래스에서 구현한 equals 메서드 문서



더 효율적이고 다양한 방법이 있겠지만 글쓴이가 주로 실무에서 사용하는 방법을 정리할 겸 포스팅합니다. :)

궁금한 점이나 오타, 수정, 요청 사항은 댓글로 남겨주세요. (로그인 없이 가능)