기본 타입(primitive type) 과 참조 타입(reference type)으로 분류할 수 있음
기본타입(Primitive type)
타입
|
할당되는 메모리 크기
|
기본값
|
데이터의 표현 범위
|
||
논리형
|
boolean
|
1 byte
|
false
|
true, false
|
|
정수형
|
byte
|
1 byte
|
0
|
-128 ~ 127
|
|
short
|
2 byte
|
0
|
-32,768 ~ 32,767
|
||
int(기본)
|
4 byte
|
0
|
-2,147,483,648 ~ 2,147,483,647
|
||
long
|
8 byte
|
0L
|
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
|
||
실수형
|
float
|
4 byte
|
0.0F
|
(3.4 X 10-38) ~ (3.4 X 1038) 의 근삿값
|
|
double(기본)
|
8 byte
|
0.0
|
(1.7 X 10-308) ~ (1.7 X 10308) 의 근삿값
|
||
문자형
|
char
|
2 byte (유니코드)
|
'\u0000'
|
0 ~ 65,535
|
기본 타입은 실제 값을 저장하는 공간, 스택(stack)이라는 메모리 영역에 생성된다
주로 컴파일 에러가 발생한다.
메모리 사용 영역
1. 메서드 영역
- 바이트코드 파일을 읽은 내용이 저장되는 영역
- 상수, 정적 필드, 메서드 코드, 생성자 코드 등
2. 힙 영역
- 객체가 생성되는 영역
3. 스택 영역
- 메서드를 호출할 때마다 생성되는 프레임이 저장되는 영역
참조 타입(Reference type)
기본 타입을 제외한 든 타입을 말한다
아직 변수가 지정되고 있지 않다는 뜻으로 Null 값을 가질 수 있다
참조 타입은 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 힙(Heap) 메모리에 저장된다.
실행 시 에러가 나는 런타임 에러가 발생한다.
참조 변수를 사용하면서 가장 많이 발생하는 예외 중 하나가 0NullPointException이다.
-> 기본 타입으로 선언된 변수와 참조 타입으로 선언된 변수의 가장 큰 차이점은 저장되는 값이다
Null과 NullpointErexception
*Null도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에.
*NullPointException이 발생하면 예외가 발생된 곳에서 null인 상태의 참조 변수가 사용되고 있다.
기본타입 vs 참조타입
기본변수 -> 메모리값
참조 타입 -> 메모리 주소 -> 메모리값
String str1 = "Hello";
// 200번지 -> Hello 저장
String str2 = "Hello";
// 200번지
System.out.println(str1 == str2); // true - 번지수 비교
String str3 = new("Hello");
//300번지 - 저장된 Hello
System.out.println(str3 == str2); // false - 가르키는 번지수 다름
System.out.println(str3.equls(str2)); // true - 데이터값을 비교
'JAVA' 카테고리의 다른 글
[Java] 싱글톤 패턴 (0) | 2024.05.04 |
---|---|
[Java] String 문자열 타입 (0) | 2024.05.04 |
[Java] 예외 Exception (0) | 2024.05.04 |
[Java] 제네릭 (0) | 2024.05.04 |
[Java] 확장 for 문 (0) | 2024.05.04 |