자바 기본 타입과 래퍼 클래스, int·Integer 차이
- Java
- 2021. 8. 10.
타입(Type · 형)
자바에서 모든 변수에는 타입(형)이 있다. 어떤 타입을 지정하느냐에 따라 변수에 저장할 수 있는 값의 종류와 범위가 결정된다. 크게 기본 타입과 참조 타입으로 구분된다. 기본 타입에는 정수, 실수, 문자, 논리 리터럴(참, 거짓) 등을 저장한다. 참조 타입에는 주소값으로 배열, 클래스, 인터페이스 등을 저장한다.
기본타입(primitive type) - 기본형 | 래퍼 클래스(wrapper class) - 참조형 |
---|---|
byte | Byte |
char | Character |
int | Integer |
float | Float |
double | Double |
boolean | Boolean |
long | Long |
short | Shrot |
자바는 기본 타입의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장(wrapper) 객체, 래퍼 클래스라고 부른다. 말 그대로 기본 타입 값을 내부에 포장한다. 위 표는 각 기본타입별 포장 객체다. 기본 타입과 래퍼 클래스의 차이는 기본 타입은 값 자체를 저장하고 래퍼 클래스는 객체를 저장한다는 점이다.
Ex)
int i = 10; // i에는 10이 저장됨
Integer in = 10; // in에는 10을 저장하고 있는 객체의 주소값이 저장됨
기본형과 참조형의 또 하나의 차이는 null
값의 저장 가능 여부다. int
타입인 i
에는 null 값을 저장할 수 없다. i는 정수만 저장할 수 있기 때문이다. 반면 Integer
타입인 in
에는 null 값을 저장할 수 있다. 주소값을 저장하고 있기 때문에 주소가 없다는 의미로 null을 저장한다.
Ex)
int i = null; // error
Integer in = null; // okay
이런 특징은 자바와 DB를 연동했을 때 DTO 클래스의 변수 타입을 정할 때 활용된다. 예를 들어 테이블 속성 중 not null이 지정되지 않은 속성은 null을 저장할 수 있도록 래퍼 클래스 타입으로 선언해야 한다.
Ex)
/*CREATE TABLE DEPT01 (
DEPTNO NUMBER(2),
DNAME VARCHAR2(14),
LOC VARCHAR2(13) ,
PRIMARY KEY (DEPTNO)
);*/
public class DeptDto {
private Long deptno; // NUMBER 타입 >> Long으로 선언
private String dname;
private String loc;
}
반응형
'Java' 카테고리의 다른 글
[자바 / JAVA] implements Serializable | 직렬화란 | 사용 이유 (0) | 2021.08.12 |
---|---|
[자바 / Java] 객체(Object)란 (0) | 2021.08.10 |
XML 문서의 태그 순서를 지키는 이유? (0) | 2021.07.10 |
메이븐(maven)을 쓰는 이유 - pom.xml (0) | 2021.07.10 |
자바 서블릿(servlet) 메서드의 의미 (0) | 2021.07.06 |