이번에 회사에서 개발을 하면서 난감했던 적이 있었습니다.
페이징 작업을 위해 클라이언트로부터 limit - offset값을 받아야 했습니다.
excel 출력을 위해서 페이징하지 않는 목록을 받기 위해 limit - offset값을 받지 않는 경우도 있었죠.
그런데, 후자의 경우 limit - offset 둘다 0으로 입력받게 되었습니다. 망했죠
1. int란
int는 primitive 자료형이다.
primitive 자료형은 데이터의 형태에 따라 값이 저장될 공간의 크기 및 형식을 정의합니다.
2. Integer란
int 자료형을 감산 wrapper class 이다.
자료형(data type)가 아닌 class입니다.
매개변수로 객체가 필요할 떄, 자료형이 아니라 객체로 저장할 떄, 객체간 비교가 필요할 떄 사용합니다.
3. 차이
int는 산술연산이 가능하지만, Integer는 그 자체로는 산술연산이 불가능합니다.(되긴하는데, 오토언박싱덕분에 가능합니다)
Integer는 null값 처리가 가능하지만 int는 불가능합니다.
null값을 사용할 수 있다는거 자체로 DB와 주고받을 DTO, VO에 사용하기 굉장히 좋죠.
4. 박싱(Boxing)과 언박싱(Unboxing)
Boxing은 Primitive자료형에서 Wrapper클래스로,
Unboxing은 Wrapper클래스에서 Primitive자료형으로 변환함을 말합니다.
//Boxing
int i = 1;
Integer ii = new Integer(i);
//Unboxing
Integer ii = 1;
int i = ii.intValue();
5. ValueOf()와 parseInt()
주로 문자열을 정수형으로 바꿀때 사용하는 두 함수입니다.
Integer.ValueOf(String)는 문자열을 Integer로, Integer.parseInt(String)은 int형으로 반환합니다.
5.번외
그거 아시나요...?
double은 자료형이고 Double은 래퍼 클래스입니다. 처음알았습니다...
모든 기본 자료형은 래퍼클래스를 생성가능한데,
double -> Double, float -> Float 등등으로 가능한데,
int -> Integer, char -> Character 이 둘만 래퍼클래스명이 자료형과 다르네요.
'Language > JAVA' 카테고리의 다른 글
순회중 컬렉션의 크기를 바꾸면 생기는 일 - ConcurrentModificationException 추적하기 (2) | 2023.02.12 |
---|---|
JavaScript)문자열 자르기 - substring, slice() [짧] (0) | 2022.09.08 |
Checked, Unchecked Exception (0) | 2022.08.10 |
JavaBean이란? + 자바빈 규약 (0) | 2022.04.16 |
Oracle JDK Archive Link (0) | 2021.12.01 |