Java를 사용하다 보면 데이터나 객체를 비교해야 할 때가 많습니다.
이때 'equals'와 '=='를 어떻게 사용해야 하는지 헷갈리기 쉽습니다. 이 둘은 자주 사용되지만 용도가 다르기 때문에 제대로 이해하고 사용하는 것이 중요합니다.
'equals'와 '==' 에 대해 알아보겠습니다.
'==' 연산자
'==' 연산자는 주로 기본 타입(primitive types) 비교에 사용되며, 참조 타입(reference types) 비교에도 사용됩니다.
기본 타입 비교
기본 타입의 값을 비교할 때 '=='를 사용하면 값이 동일한지 여부를 확인할 수 있습니다.
int a = 5;
int b = 5;
System.out.println(a == b); // true,
참조 타입 비교
참조 타입에서는 '=='를 사용하여 두 객체가 같은 메모리 주소를 가리키고 있는지를 확인합니다.
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); // false, 다른 객체(주소)를 가리키고 있음
'equals' 메서드
'equals'메서드는 참조 타입의 객체 내용을 비교할 때 사용됩니다.
Object클래스에 정의된 기본 'equals' 메서드는 객체의 주소를 비교하지만, 많은 클래스에서 이 메서드를 오버라이드하여 객체의 논리적 등등성을 비교합니다.
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1.equals(s2)); // true, 내용이 같음
동일한 참조 비교
두 변수가 동일한 객체를 가리키는 경우 '=='연산자는 true를 반환합니다.
String s3 = s1;
System.out.println(s1 == s3); // true, 동일한 객체(주소)를 가리킴
요약
- '==' 연산자는 기본 타입의 값이나 참조 타입의 객체 주소를 비교합니다.
- 'equals'메서드는 참조 타입의 객체 내용을 비교합니다.
이를 통해 객체의 논리적 동등성 확인할 수 있습니다.
'Java' 카테고리의 다른 글
[Java] computeIfAbsent 효율적인 데이터 캐싱과 값 처리 (0) | 2024.07.27 |
---|---|
[Java] abstract class 와 interface class의 차이 (0) | 2024.07.17 |
[Java] of와 from 메서드의 차이 (0) | 2024.07.04 |
[Java] Record란? (0) | 2024.04.13 |
[Java] Primitive Type, Reference Type의 개념과 차이점 (0) | 2024.01.13 |