본문 바로가기
IT_Developers/JAVA

JAVA - "equals"와 "==" 차이점을 알아봅시다.

by 고코더 2020. 3. 16.

이퀄과 == 두 개의 비교 기능 뭐가 다를까?


안녕하세요.
고코더 입니다.


자바에서는 대표적인 두 가지 데이터 비교 방법이 존재합니다. 바로 "equals"와 "==" 입니다.


 1. 공통점


우선 공통점 부터 다뤄보려고 합니다. 이 둘은 데이터를 비교하는 기능을 합니다. 비교한 데이터를 논리형으로 리턴합니다. 즉 true 아니면 false 겠죠. 이런 기능을 통해 두 개의 데이터를 비교하여서 로직을 완성합니다.



 2. 형태의 차이점


이 둘은 근본적으로 형태가 다른 점이 존재합니다.

equals() 는 메소드입니다.
열기 닫기를 같이 쓰는걸 보면 메소드 이란걸 알 수 있습니다. 

== 는 비교 연산자입니다.
비교를 위한 연산자 입니다. 


 3. 비교 방식


이제 진짜 다른 점을 다루겠습니다. equals 는 값을 비교합니다. == 는 참조 주소값을 비교합니다. 이렇게하면 이해가 어렵죠? 다시 한번 설명해보겠습니다.

문자를 저장하는 string은 참조형입니다. 특정 글자를 담으면 힙메모리에 저장되고 참조 주소 값을 가져옵니다. 예시를 들면 이렇습니다. 

두 대의 자동차가 있습니다. 같은 모델입니다. 이때 equals를 비교하면 이 둘 은 같습니다. 그런데 번호판을 보니 하나는 서울에서 출고했고 다른건 부산에서 출고했습니다. 이 둘을 ==으로 비교하면 값이 다릅니다. 왜냐면 주소 값이 다르니깐요.


 4. 예제 소스


아래에 소스를 만들어봤습니다. 이를 통해 한번 어떻게 비교되는지 알아보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String a="GoCoder";
String b="GoCoder";
String c=new String("GoCoder");
 
== b
// true
 
==c
// flase
 
a.equals(b)
// true
 
a.equals(c)
// true
cs


결론은 비교 연산자 == 일때 new를 통해 새롭게 참조값을 생성할 경우 기존 string 과 다르기 때문에 주소값을 비교할시 다른 것입니다. 실무에서는 결과 값을 비교하는 경우가 많아서 equals를 사용하는 경우가 많습니다.


마무리


차이가 많죠.


댓글