자바는 기본형(Primitive type)과 참조형(Reference type)이 있음
📌Java Data Type
ㄴ Primitive Type
ㄴ Boolean Type(boolean)
ㄴ Numeric Type
ㄴ Integral Type
ㄴ Integer Type(short, int, long)
ㄴ Floating Point Type(float, double)
ㄴ Character Type(char)
ㄴ Reference Type
ㄴ Class Type
ㄴ Interface Type
ㄴ Array Type
ㄴ Enum Type
ㄴ etc.
Java에서는 총 8개의 타입을 미리 정의
기본 자료형은 반드시 사용하기 전에 선언(Declared)되어야 함
OS에 따라 자료형의 길이가 변하지 않음
비객체 타입 ➡️ null값을 가질 수 없음(null을 넣고싶다면 Wrapper Class 사용)
스택(Stack) 메모리에 저장
1byte
논리형으로 기본값은 false
참과 거짓을 저장하는 타입
가장 크기가 작음
1byte
주로 이진데이터를 다루는데 사용
C언어와의 호환을 위해 사용(잘 사용하지X)
4byte
정수 연산을 하기 위한 기본 타입
byte, short의 변수가 연산을 하면 결과는 int형
8byte
주로 수치가 큰 데이터를 다루는 프로그램에서 사용
초기화 시 정수 값 뒤에 알파벳 L을 붙여서 long타입임을 알려줘야함(안붙이면 컴파일 에러 발생)
float 4byte / double 8byte
실수를 가수와 지수 형식으로 저장하는 부동소수점 방식
가수를 표현하는데 있어 double형이 float형보다 표현 가능 범위가 큼
실수의 기본 타입은 double형이므로 float형에는 알파벳 F를 붙여서 float형임을 명시해야 함
Primitive type을 제외한 나머지 타입들
java.lang.Object 클래스를 상속하는 모든 클래스
new로 인하여 생성하는 것들은 메모리 영역인 Heap 영역에 생성하고 Garbage Collector가 돌면서 메모리 해제
클래스(class)/인터페이스(interface)/배열(array)/열거(enum) 타입 존재
빈 객체를 의미하는 Null 존재
문법상으로는 에러가 없지만 실행시켰을 때 에러가 나는 런타임 에러가 발생
➡️ 객체나 배열을 Null값으로 받으면 NullPointerException이 발생하므로 변수 값 넣어야 함
Heap 메모리에 생성된 인스턴스는 메소드나 각종 인터페이스에 접근하기 위해 JVM의 Stack 영역에 존재하는 Frame에 일종의 포인터인 참조값을 가지고 있어 이를 통해 인스턴스 핸들링
[참고 자료]