728x90
Java의 참조형과 기본형의 차이에 대해서 궁금해서 지피티에게 물어보고 내용을 검증했다.
저번에 자바로 코드를 짰을 때 일부러 null 값을 허용하지 않기 위해서 Integer 가 아니라 int를 사용하는 것을 봤었다.
이래서 그렇군..
1. 기본형 (Primitive Type)
기본형은 값을 직접 저장하는 간단한 데이터 타입입니다. Java에는 총 8개의 기본형이 있습니다.
기본형 종류 및 기본값
데이터 타입크기기본값예시 값
byte | 1 byte | 0 | -128 ~ 127 |
short | 2 bytes | 0 | -32,768 ~ 32,767 |
int | 4 bytes | 0 | -2,147,483,648 ~ 2,147,483,647 |
long | 8 bytes | 0L | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float | 4 bytes | 0.0f | 3.4028235e+38f ~ 1.4e-45f |
double | 8 bytes | 0.0d | 1.7976931348623157e+308 ~ 4.9e-324 |
char | 2 bytes | '\u0000' | 'A', '1', etc. (유니코드 문자) |
boolean | 1 bit | false | true, false |
기본형의 특징
- 메모리 할당:
- 기본형은 스택 메모리에 할당됩니다.
- 값이 직접 저장되므로 접근 속도가 빠릅니다.
- 초기화 시 기본값:
- 클래스의 멤버 변수로 선언되면 자동으로 기본값으로 초기화됩니다.
- 로컬 변수는 반드시 명시적으로 초기화해야 사용 가능합니다.
- 값 복사:
- 기본형 변수에 값을 할당하거나 전달하면 값이 복사됩니다.
2. 참조형 (Reference Type)
참조형은 객체의 참조(주소)를 저장하는 타입입니다. 모든 객체, 배열, 문자열 등이 참조형에 해당합니다.
참조형의 예시
- 클래스: String, Integer, ArrayList, 사용자 정의 클래스 등
- 배열: int[], String[]
- 인터페이스와 열거형 (enum)
참조형의 특징
- 메모리 할당:
- 참조형은 힙 메모리에 객체가 할당되고, 스택 메모리에는 객체의 참조(주소)가 저장됩니다.
- 초기화 시 null 값:
- 참조형 변수는 객체를 참조하지 않으면 null로 초기화됩니다.
- null은 참조가 없음을 나타내는 특별한 값입니다.
- 참조 복사:
- 참조형 변수에 값을 할당하거나 전달하면 주소가 복사됩니다.
- 같은 객체를 여러 참조형 변수가 공유할 수 있습니다.
- null 참조 주의:
- null 참조된 변수를 사용하면 **NullPointerException**이 발생합니다.
기본형 vs 참조형 비교
특징기본형 (Primitive)참조형 (Reference)
저장 방식 | 값 자체를 저장 | 객체의 주소(참조)를 저장 |
메모리 할당 | 스택 메모리 | 참조는 스택, 객체는 힙에 저장 |
초기화 시 기본값 | 0, false, 0.0 등 | null |
값 할당/전달 | 값이 복사됨 | 참조(주소)가 복사됨 |
null 사용 가능 여부 | null 허용 안됨 | null 허용 |
예제 타입 | int, double, boolean | String, int[], 사용자 정의 클래스 |
728x90
'잡다한 내용' 카테고리의 다른 글
Did not find openai_api_key, please add an environment variable OPENAI_API_KEY which contains it, or pass openai_api_key as a named parameter. (0) | 2025.01.07 |
---|---|
[맥] Python 가상환경 설정, requirements (2) | 2025.01.02 |
xcode will continue when the operation completes. (1) | 2024.11.21 |
파이썬 global에 관하여 (0) | 2024.11.07 |
AWS 프리티어인데 요금 나올때 (0) | 2024.09.29 |