일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코딩초보
- 제이쉘
- 스프링 기초
- 컴퓨터과학개론
- Elk
- 메소드
- Java
- 자바프로그래밍
- Git
- 프로그래밍언어
- 프로그래밍
- eclips
- 자바기초
- 프로그래밍기초
- 클래스
- 데이터베이스
- JAVA기초
- 배열
- github
- 스프링
- JShell
- 초보코딩
- 기초코딩
- 이클립스
- 자바 스프링
- 알고리즘
- 초보코딩탈출
- 리눅스
- 자바
- spring
- Today
- Total
키보드워리어
[자바]🍯꿀팁 - equals 메서드 활용 본문
안녕하세요 【키보드 워리어】
⌨🗡🧑
블로그 방문자 여러분, 안경닦이입니다.
Equals
Java에서 객체를 비교하는 방법은 두 가지가 있습니다. 첫 번째는 == 연산자를 사용하는 것이고,
두 번째는 equals() 메서드를 사용하는 것입니다.
== 연산자는 두 개의 객체가 메모리 상에서 동일한 객체인지를 비교합니다. 즉, 두 개의 객체가 같은 메모리 주소를 참조하는 경우에만 true를 반환합니다.
하지만, equals() 메서드는 객체의 내용이 같은지를 비교합니다. 따라서 두 개의 객체가 같은 메모리 주소를 참조하지 않더라도, 내용이 같다면 true를 반환합니다.
객체의 내용이 같은지를 비교하려면 equals() 메서드를 오버라이딩하여 사용해야 합니다.
public class MyClass {
private int id;
private String name;
public MyClass(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MyClass)) return false;
MyClass myClass = (MyClass) o;
return id == myClass.id &&
Objects.equals(name, myClass.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
원하는 필드 멤버 변수를 만들어주시고 마우스 오른쪽 버튼을 클릭해 보시면
Source -> hashcode and equals를 클릭
equals() 메서드를 생성할 수 있게 해 주어요.
위 버튼을 클릭해서 활용해 준 게 위 코드의 MyClass 클래스입니다.
위에서 멤버변수를 equals() 메서드와 hashCode() 메서드를 오버라이딩하여 사용하고 있습니다.
equals() 메서드에서는 먼저 == 연산자를 사용하여 객체가 동일한 객체인지를 확인하고, instanceof 연산자를 사용하여 객체가 MyClass 클래스의 인스턴스인지를 확인합니다. 그리고 MyClass 클래스의 필드인 id와 name을 비교하여 두 객체가 같은 내용을 가지는지를 확인합니다.
따라서,,,
equals() 메서드와 hashCode() 메서드를 적절하게 오버라이딩하여 사용하면 객체의 내용을 비교하는 데에 용이합니다.
이러한 오버라이딩은 컬렉션 프레임워크를 사용하는 경우에 매우 매우 중요한 역할을 합니다.
'JAVA > JAVA 꿀팁모음' 카테고리의 다른 글
[java]equals 메서드와 hashcode 메서드의 관계 (0) | 2023.04.10 |
---|---|
[자바]🍯 Block 활용하여 코드의 가독성을 높이자! (0) | 2023.04.06 |
[java🍯]자바 팁 - import | static import? (0) | 2023.04.03 |
[자바] import | static import (0) | 2023.02.26 |
[자바]원시형 타입_초기화메서드_MAX,MIN_VALUE (0) | 2023.02.08 |