자바에서는 크게 기본형 타입(Primitive Type), 참조형 타입(Reference Type)이 있다.
자바는 C언어와 달리 참조형 변수 간의 연산을 할 수 없다. 고로 실제 연산에 사용되는 것은 모두 기본형 변수이다.
이에 대해 정리해보자
기본형 타입(Primitive Type)
- 반드시 사용하기 전에 선언되어야함
- 비객체 타입이기 때문에 null 값을 가질 수 없음 -> 기본형 타입에 null 을 넣고 싶다면 Wrapper 클래스를 활용해야 함
- 실제 값을 저장하는 공간으로, stack 메모리에 저장
- 컴파일 시점에 데이터의 표현 범위를 벗어나면 컴파일 에러가 발생
- Ex) boolean, byte, short, int, long, float, double, char
- 정수는 많이 사용되므로 4가지 타입이 제공된다. 주로 int를 많이 사용하는데, int는 CPU가 가장 효율적으로 처리할 수 있는 타입이기 때문이다.
- 효율적인 실행보다 메모리를 절약하려면 byte나 short를 선택해야 한다.
참조형 타입(Reference Type)
- 기본형 타입을 제외한 타입들은 모두 참조형 타입으로 new 키워드로 객체를 생성하여 데이터가 생성된 주소를 참조
- 기본형과는 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장한다.
- 참조 타입의 데이터의 크기가 가변적, 동적이기 때문에 동적 데이터를 관리하는 힙 메모리에 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장한다.
- 기본적으로 java.lang.Object를 상속받으면 Reference Type이 된다.
- null로 초기화할 수 있다.
- 참조형 타입은 런타임 에러가 발생한다.
- Ex) Class, Array, Interface, Enumeration(열거)
실제로 사용하다보면 겪으며 차이를 느낄 수 있다. 하지만 알고 사용하는 것과 모르고 사용하는 것은 천차만별이다.
실제로 int 값의 범위를 간과하였다가 실제 배포 이후 큰 이슈가 터진 적이 있다. 실수는 반복되면 실력이기에 항상 기억하자!
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 배열(Array) 총 정리 (0) | 2023.02.22 |
---|---|
[JAVA] 타입 형변환 / 형변환 방법 정리 (0) | 2023.02.22 |
[JAVA] 데이터 타입 정리 (boolean / char / string / int / long / float / double) (0) | 2023.02.21 |
[JAVA] 변수, 그리고 상수와 리터럴 (0) | 2023.02.20 |
[JAVA] 자바란? JVM이란? 객체지향(특징,장단점)이란? (0) | 2023.02.20 |