728x90
Data type이란 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야하는지를 알려주는것이다.
JAVA에선 크게 기본형 타입괴 참조형 타입이 있다.
기본형 타입(Primitive type)
- 총 8가지의 기본형 타입(Primitive type)을 미리 정의하여 제공한다.
- 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다.
- 기본값이 있기 때문에 Null이 존재하지 않는다. 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용한다.
- boolean
- 저장 가능한 범위 true/ false
- Java가 데이터를 다루는 최소 범위가 1 Byte 이기 때문에 Byte를 사용한다.
- char
- Java의 경우 Unicode를 사용, 동양의 글자의 경우 2 Byte 필요하기때문에 char 의경우 2 Byte 이용한다
- Java에서 유일하게 제공되는 unsigned 형태다.
unsigned : 음수 없이 0부터 시작하여 양수 값만 가지는 데이터 형태 - char형은 unsigned 형식이기 때문에 맨 앞 비트를 음수 양수 형식 으로 사용하지 않는다.
타입 | 메모리 크기 | 기본값 | |
논리형 | boolean | false | true,false |
정수형 | byte | 0 | -128 ~ 127 |
short | 0 | -32,768 ~ 32,767 | |
int | 0 | -2,147,483,648 ~ 2,147,483,647 | |
long | 0L | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
실수형 | float | 0.0F | (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 |
double | 0.0 | (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 | |
문자형 | char | '\u0000' | 0 ~ 65,535 |
- VM의 피연산자 스택이 피연산자를 4 Byte 단위로 저장 하기 때문에 int보다 작은 자료형의 값을 계산시int 형으로 형변환 되서 연산이 수행된다.
- 정수형 데이터를 사용하게 되면 JVM에서 기본적으로 int형 데이터타입의 데이터로 인식을 해주게 된다.
- int형 데이터 타입의 범위를 넘어서는 long 데이터 타입의 정수를 사용하고자 하는 경우에는 정수 데이터 맨 뒤 쪽에, 접미사 'l' 이나 'L'을 붙여줘야한다.
참조형 타입(Reference type)
- 기본형 타입을 제외한 타입들이 모두 참조형 타입(Reference type)이다.
- 빈 객체를 의미하는 Null이 존재한다.
- 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 힙(Heap) 메모리에 저장된다.
- 문법상으로는 에러가 없지만 실행시켰을 때 에러가 나는 런타임 에러가 발생한다. 예를 들어 객체나 배열을 Null 값으로 받으면 NullPointException이 발생하므로 변수값을 넣어야 한다.
타입 | 예시 | 기본값 | 할당되는 메모리 크기 |
배열(Array) | int[] arr = new int[5]; | Null | 4byte(객체의 address값) |
열거(Enumeration) | Null | ||
클래스(Class) | String str ="test"; | Null | |
인터페이스(Interface) | Null |
728x90
'Dev > JAVA' 카테고리의 다른 글
[Code] Refactoring , 리펙토링 (0) | 2022.02.28 |
---|---|
[Design Pattern] 빌더 패턴(Builder Pattern) (0) | 2021.12.02 |
[JAVA]Optional이란? (0) | 2021.06.17 |
[JAVA]상속(Inheritance) (0) | 2021.06.16 |
[JAVA]삼항연산자(Ternary Operator) (0) | 2021.06.15 |