기본형과 참조형
값의 타입
기본형 8개
- 값
- 문자 - char
- 숫자
- 정수 - byte, short, int, long
- 실수 - float, double
- 논리 - boolean
기본형과 참조형
- 기본형 (Primitive type)
- 오직 8개 (boolean, char, byte, short, int, long, float, double)
- 실제 값을 저장
- type마다 크기가 다름 - ex) byte는 1byte, short는 2byte, int는 4byte, long은 8byte
- 참조형(Reference type)
- 무한개(우리가 추가할 수 있음) 기본형을 제외한 나머지(String, System 등)
- 메모리 주소를 저장(4 byte 또는 8 byte)
- type에 관계없이 항상 크기가 4byte임
이때, 4 byte로 표현할 수 있는 최대값은 대략 40억 정도이다. 따라서 4byte의 참조변수로는 약 40억 byte,
즉 4GB의 메모리를 다룰 수 있다.
OS와 JVM에서 사용하는 부분을 제외하면 실제로 프로그램에서 사용할 수 있는 메모리는 4GB의 절반인 2GB도 되지 않지만 말이다.
이처럼 32bit JVM에서 참조변수의 크기는 4byte 즉, 32bit지만,
64bit JVM같은 경우에는 참조변수의 크기가 8byte, 즉 64bit이다. 따라서 64bit JVM에서 다룰 수 있는 최대 메모리는 40억*40억 = 160경 byte이고, 약 1600만 TB이다. 어마어마하게 큰 값이다. 하지만, 이것은 어디까지나 이론적인 값이고, 실제로 사용할 수 있는 메모리는, TB단위 정도이다.
32bit JVM을 설치해서 사용할 수도 있고, 64bit JVM을 설치해서 사용할 수도 있지만,
앞으로 보다 이해하기쉽게, 참조형 변수의 크기를 32bit JVM기준인 4byte로 간주하도록 하겠다.
Date today; // 참조형 변수 today를 선언
이것은 참조형 변수 today를 선언한 것인데, 이 변수의 타입은 Date인데,
Date 타입은 기본형 8개에 해당하지 않으므로 참조형이라는 것을 쉽게 알 수 있다.
today = new Date(); // today에 객체의 주소를 저장
위의 문장은 new Date()를 통해 객체를 생성하고, 생성된 객체의 주소를 참조변수 today에 저장한다.
만일 생성된 객체의 주소가 100번지라면, today에는 100이 저장된다.
이제 참조변수 today를 통해서 생성된 객체를 사용할 수 있다.
참조변수는 객체의 주소를 저장하기위한 것.
'JAVA' 카테고리의 다른 글
printf를 이용한 출력 (0) | 2022.03.12 |
---|---|
기본형의 종류와 범위 (0) | 2022.03.11 |
두 변수 바꾸기 (0) | 2022.03.11 |
문자, 문자열 리터럴, 문자열 결합 (0) | 2022.03.10 |
리터럴의 타입과 접미사 (0) | 2022.03.10 |
댓글
이 글 공유하기
다른 글
-
printf를 이용한 출력
printf를 이용한 출력
2022.03.12 -
기본형의 종류와 범위
기본형의 종류와 범위
2022.03.11 -
두 변수 바꾸기
두 변수 바꾸기
2022.03.11 -
문자, 문자열 리터럴, 문자열 결합
문자, 문자열 리터럴, 문자열 결합
2022.03.10