일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 사이버보안
- 컴퓨터과학
- 컴퓨터공학
- 프로그래밍
- 프로그래밍언어
- 딥러닝
- Yes
- 데이터베이스
- I'm Sorry
- 네트워크
- 데이터과학
- 알고리즘
- 머신러닝
- 웹개발
- 네트워크보안
- 데이터구조
- 데이터분석
- 2
- 자바스크립트
- 소프트웨어공학
- 코딩
- 자료구조
- 컴퓨터비전
- 파이썬
- 클라우드컴퓨팅
- 빅데이터
- 보안
- 버전관리
- 소프트웨어
- 인공지능
- Today
- Total
스택큐힙리스트
자바 열거형 멤버를 비교할 때 : == 또는 equals() ? 본문
나는 Java enum이 private 생성자와 여러 개의 public static 멤버를 가진 클래스로 컴파일된다는 것을 알고 있다. 주어진 enum의 두 멤버를 비교할 때, 나는 항상 .equals()을 사용한다.
public useEnums(SomeEnum a)
{
if(a.equals(SomeEnum.SOME_ENUM_VALUE))
{
...
}
...
}
그러나 나는 방금 .equals() 대신 == 연산자를 사용하는 코드를 만났다.
public useEnums2(SomeEnum a)
{
if(a == SomeEnum.SOME_ENUM_VALUE)
{
...
}
...
}
어떤 연산자를 사용해야 할까요?
답변 1
둘 다 기술적으로 정확합니다. .equals()의 소스 코드를 살펴보면, 그것은 단순히 ==로 연기되어 있습니다.
나는 ==을(를) 사용하지만, 그것은 null 안전성을 보장하기 때문이다.
답변 2
Java에서 enum 멤버들을 비교할 때 == 또는 equals()를 사용해야 할까?Java의 enum 클래스는 열거형 멤버들의 집합을 정의하는데 사용됩니다. 이러한 멤버들은 보통 고정된 상수 값을 가지며, 서로 구분되는 특정한 상황을 표현하기 위해 사용됩니다. 그러나, enum 멤버들을 비교할 때, 개발자는 == 또는 equals()의 사용 방법에 대해서 고민해야 합니다.
먼저, ==는 두 객체가 같은 객체를 참조하는지 검사하는 경우에 사용됩니다. 즉, == 연산자는 두 객체의 레퍼런스 값을 비교합니다. 따라서, 두 enum 멤버가 같은 객체를 참조한다면, == 연산자를 사용해 비교하는 것이 가장 적절합니다. 이 방법은 두 객체가 같은 객체를 참조하고 있는지 여부를 빠르게 비교할 수 있기 때문입니다.
반면, equals() 메소드는 두 객체가 동일한 값을 가지는 것을 비교하는데 사용됩니다. 따라서, 두 enum 멤버가 값이 같은지 비교하고자 할 때는 equals() 메소드를 사용하는 것이 더 적합합니다. 이 방법은 두 객체의 값이 같은지를 검사하는데 사용되며, 객체의 레퍼런스 값을 비교하는 것보다는 조금 느릴 수 있습니다. 하지만, 값이 같은지 여부를 비교하기 위해서는 equals() 메소드를 사용해야 하며, == 연산자를 사용하면 원하는 결과가 나오지 않을 수 있습니다.
결론적으로, enum 멤버들을 비교할 때는 이들 멤버가 같은 객체를 참조하는지를 검사하고자 한다면, == 연산자를 사용하는 것이 유리합니다. 반면, 두 객체가 동일한 값을 가지는 것을 비교해야 한다면, equals() 메소드를 사용하는 것이 더 적합합니다. 개발자는 각각의 상황에 맞게 적절한 비교 방법을 선택할 수 있도록 다양한 방법을 공부하고 활용할 필요가 있습니다.