2장 자료형
메모리는 목적에 따라 크게 3가지의 영역으로 나뉜다.
클래스 영역 정적 영역 상수 영역 메서드 영역 |
스택 영역 | 힙 영역 |
첫 번째 영역은 클래스 영역, 정적(static) 영역, 상수(final) 영역, 메서드 영역이라는 4개의 이름으로 불린다.
두 번째 영역은 스택 영역으로 변수들이 저장되는 공간이다.
마지막 영역은 힙 영역으로 객체들이 저장되는 공간이다.
기본자료형 : 스택 메모리에 생성된 공간에 실제 변숫값을 저장
Ex)boolean,byte,int,long,short,float,double,char
참조 자료형 : 힙 메모리에 저장하고, 스택 메모리의 변수 공간에는 실제 변수값이 저장된 힙 메모리의 위칫값을 저장
Ex)배열, 클래스, 인터페이스
타입 변환 방법은 단순히 변환 대상 앞에 (자료형)만 표기하면 된다. 타입 변환을 수행할 때는 저장할 수 있는 값의 범위나 종류가 달라지므로 값이 변할 수 있다는 것이다.
-업캐스팅(up-casting) : 작은 자료형을 큰 자료형에 담으면 개발자가 타입 변환 코드를 넣어 주지 않더라도 컴파일러가 자동으로 타입을 변환 ex) double value = 7; [int -> double]
-다운캐스팅(down-casting) : 큰 자료형을 작은 자료형에 대입하는 행위, 데이터 손실이 발생할 수 있으므로 컴파일러에
따른 자동 타입 변환은 일어나지 않으며, 개발자가 직접 명시적으로 타입 변환을 수행
ex) int value = (int)3.5; [double -> int]
기본 자료형 간의 연산
int보다 작은 자료형 간의 연산은 int (CPU에서 연산 최소 단위가 int이므로 int보다 작은 자료형도 일단 int로 읽어온다.)
int,int보다 큰 자료형 간의 연산은 해당 자료형 (업캐스팅)