[Java] ==과 equals의 차이

kuku·2023년 1월 10일
0

Java

목록 보기
3/7

📖자바의 데이터타입

자바의 데이터타입은 primitive이냐 아니냐로 나눠볼 수 있다. primitive는 원시라는 뜻을 가지며, 더이상 쪼갤 수 없는 데이터타입이라는 의미이다. 추가로 찾아보니 사진의 7가지 데이터타입 외에도 byte까지를 자바의 primitive type으로 분류한다.


📖==과 equals의 차이

일단 결론부터 이야기하자면 ==과 equals는 비교하려는 대상에서의 차이가 발생한다. 연산자인 ==은 비교하려는 대상이 저장되어있는 주소의 값을 비교하고, 메소드인 equals는 비교하려는 대상의 내용 자체를 비교한다.

📁primitive 데이터타입

primitive 데이터타입의 경우, 서로 다른 이름의 변수를 선언해도 변수에 들어가는 값이 같다면 각각의 변수가 가리키는 주소는 동일하다. 따라서 == 연산자를 사용하면 true를 반환한다.

📁nonprimitive 데이터타입

반면 primitive가 아닌 데이터타입의 경우, 같은 내용으로 변수를 선언해도 각각 저장되어 다른 주소값을 가리키게 되므로 == 연산자를 사용하면 false를 반환한다.
primitive 데이터타입이 아닌 객체들은 equals 메소드를 가지고 있어 서로 같은 내용을 가지고 있는지 확인할 수 있다.

그런데, String의 경우 예외적으로 new 연산자를 사용하여 생성하는 것이 아니라 리터럴 형식으로 생성한다면 primitive 데이터타입과 동일하게 동작하여 == 연산자를 사용해도 true가 반환된다.

참고 : https://youtu.be/6X1jsQQtwmo

0개의 댓글