자바 기본 타입과 래퍼 클래스, int·Integer 차이

타입(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;
}

 

반응형

댓글

Designed by JB FACTORY