Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- equals
- Database
- MariaDB
- wsdl
- 컨트롤러
- 티스토리챌린지
- API
- letterspacing
- MySQL
- 스레드
- 프로세스
- 톰캣
- 삼성증권
- java
- Tomcat
- http
- 안드로이드 스튜디오
- Linux
- integer
- cmd
- 스레드 덤프
- oracle
- HTML
- JDBC
- ibatis
- 오블완
- 영상편집
- Docker
- 키보드
- START WITH
Archives
- Today
- Total
블로그 이름
[JAVA] Integer 에서 == 연산자 대신 'equals' 메서드 비교해야 하는 이유 본문
Integer로 선언한 변수에서 == 비교 시 무조건 false로 반환되는 이슈가 있었다.
찾아보니 생성자를 통한 Integer 객체 생성 시 -128 ~ 127 사이의 값은 == 연산자로 비교되지 않는다고 한다.
'==' 연산자 : 객체의 주소 값을 비교
'equals' 메서드 : 객체의 값(데이터) 를 비교
Wrapper 타입인 Integer 객체에 '==' 연산자 사용 시 false값이 반환되는 경우가 있다.
원인은 Integer Cache라는 데에 있다.
-127부터 127 사이의 값들은 Integer 객체에서 내부적으로 Cache되고, 해당 참조 객체를 통해 재사용되므로 주소값 비교 시에도 true로 사용 가능하지만, 생성자를 통한 선언에서는 cache 되지 않으며, 해당 사이 값을 사용하더라도 == 값으로 비교되지 않는다.
Integer 비교 시 equals 메서드를 사용하는 것이 좋겠다.
'개발 > Java' 카테고리의 다른 글
| [JAVA] 긴 데이터 줄이는 방법 (StringUtils.abbreviate) (0) | 2025.02.10 |
|---|---|
| [JAVA] 서블릿(Servlet) 이란? (0) | 2025.01.20 |
| [JAVA] isEmpty() 와 isBlank()의 차이 (1) | 2024.12.30 |
| [JAVA] List를 지정 크기로 분할하기 (0) | 2024.12.30 |
| [Java] Type safety: Unchecked cast from Object to List<AAA> (0) | 2024.12.13 |