※ 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 메서드 문서
더 효율적이고 다양한 방법이 있겠지만 글쓴이가 주로 실무에서 사용하는 방법을 정리할 겸 포스팅합니다. :)
궁금한 점이나 오타, 수정, 요청 사항은 댓글로 남겨주세요. (로그인 없이 가능)
'Program > Java' 카테고리의 다른 글
[Java] 배열(Array) 정렬 하기 ( 오름차순,내림차순 등 ) (2) | 2020.03.12 |
---|---|
[Java] 배열(Array) 선언 및 초기화 하기 (2) | 2020.03.06 |
[Java] JAR WAR 차이점 및 특징 ( + EAR ) (4) | 2020.02.14 |
[Java] EHCACHE 최대 크기 설정하기 ( Limit Size ) (0) | 2020.01.29 |
[Java] String, StringBuffer, StringBuilder 차이 및 장단점 (22) | 2020.01.28 |