반응형

오늘은 Java 기본형(primitive type)과 참조형(reference type) 종류 및 특징,사용 이유에 대해 시작하겠습니다.

 

자바는 크게 기본형(primitive type), Wrapper Class 참조형(reference type)으로 나눠진다.

Primitive(머티브) 자료형(기본형 타입)

종류


byte

short

int

long

float

double

char

boolean

void

 

이것들을 Primitive 자료형이라 부른다.

 

 

특징


모두 첫 글자가 소문자

산술 연산이 가능함.

null 초기화 없음.

int a = null; (x)
int a = 0; (o)

 

Wrapper 클래스(포장 클래스)

 

종류


Byte 

Short 

Integer 

Long 

Float 

Double 

Charater 

Boolean 

Void

 

 

특징


모두 첫 글자가 대문자
산술
연산 불가

null 초기화 있음.

DB 연동시 DTO 객체에 null 필요한 경우 사용 있음

 

 

사용 이유


1. 매개변수로 객체가 요구 될때.

2. 기본형 값이 아닌 객체로 저장해야 할 때.

3. 객체간의 비교가 필요할 때.

 

 

그리고

Boxing과 Unboxing의 개념을 알아야 합니다.

Boxing

개념


Primitive 자료형 -> Wrapper 클래스

기본형 자료형을 포장 클래스로 변환한다.

int primitive_age = 30;
Integer wrapper_age = new Integer(primitive_age);

 

Unboxing

개념


Wrapper 클래스 -> Primitive 자료형

포장 클래스를 기본형 자료형으 변환한다.

Integer wrapper_age = new Integer(30);
int primitive_age= wrapper_age.intValue();

 

 

정리

객체 박스(Wrapper 클래스) 정수를 담는다. (Boxing)

박스에 담겼으니 안에 내용물을 바꾸는건 불가능하다.

 

바꾸려면 박스에서 내용물을 꺼낸다. (Unboxing)

내용물을 다시 꺼냈으니 바꾸는게 가능해짐.

 

Integer - Wrapper 클래스

int - 기본 자료형

 

여기서 잠깐!

Integer obj = new Integer(61); 아니라

Integer obj = 61;로 해도 61 정수가 자동으로 박스에 담긴다.

이건 무엇일까??

 

[JDK 1.5 버전 이후 사용 가능]

그것이 바로 AutoBoxing AutoUnBoxing 기능이다.

 

AutoBoxing

 

개념


int num1 = 61;
Integer obj = num1;

int num1의 값을 Integer 객체에 넣기 위해서는(Boxing) new Integer(num1) 과 같이 객체를 생성해야 하지만,

위와 같이 대입하면 AutoBoxing이 자동으로 진행된다.

 

 

AutoUnBoxing

 

개념


Integer obj2 = new Integer(69);
int num1 = obj2;

Integer 객체에 있는 int 값을 가져오기 위해서는(UnBoxing) obj2.intValue() 메소드를 사용하여 가져와야 하지만,

위와 같이 int 형 변수에 Integer 객체를 대입하면 자동으로 UnBoxing이진행된다.

 


주의

AutoBoxing과 AutoUnBoxing 은 단지 기본형 타입과 상응하는 Wrapper class에만 일어난다.

다른 경우에 대입을 시도하면 컴파일 에러가 발생한다.

- Integer intValue(), Double doubleValue() 등만 AutoBoxing과 AutoUnBoxing이 발생한다.

Double obj = 3.14;
int num1 = obj.intValue() ; (O)
int num1 = obj; (X)

 

* Wrapper 클래스의 기본 메소드들

 메소드

반환값 

설명 

 booleanValue()

boolean 

기본형 데이터를 문자열로 바꾼 뒤에 반환 

 byteValue()

byte 

객체의 값을 byte 값으로 변환하여 반환 

doubleValue() 

double 

객체의 값을 double 값으로 변환하여 반환 

floatValue() 

float

객체의 값을 float 값으로 변환하여 반환 

intValue() 

int 

객체의 값을 int 값으로 변환하여 반환 

longValue() 

long 

객체의 값을 long 값으로 변환하여 반환 

 shortValue()

short 

객체의 값을 short 값으로 변환하여 반환 

Wrapper class 객체에서 해당 메소드를 사용은 형변환이 가능한 메소드만 사용이 가능하다.

 

+추가

Integer.parseInt("100") , Integer.valueOf("100") 이 둘의 차이점이 헷갈린다면 참고

 

[Java] parseInt()와 intValue()

오늘은 Java parseInt() && intValue() 개 (개념) 이 (사용 이유) 문 (문법 및 예시) 시작하겠습니다 . parseInt() 개념 static 이다, 그러므로 Integer 생성안하고 parameter만 넣어주면 메소드를 수행할 수 있다..

java119.tistory.com

 

반응형

+ Recent posts