프로그램 언어에는 여러가지 데이터 타입이 존재한다. 이 때 각 데이터 타입에 사용되는 메모리 용량은 상이하다. 보통의 경우에는 같은 타입끼리 연산을 진행하지만 프로그래밍을 하다보면 서로 다른 타입을 연산해야할 때가 있다. (ex : (int) + (double)). 이때 어떻게 컴퓨터가 이것을 계산하는지 알아보자.
메모리양이 작은 데이터를 큰 데이터 타입으로 변환할 때 일어난다.
메모리가 큰 데이터 타입을 작은 데이터 타입으로 변환할려고 할 때는 변수명 옆에 변환할 타입을 명시해줘서 강제적으로 형변환 하는 것을 말한다.
ex1) int -> byte (큰 -> 작)
int는 4byte로 32bit로 이루어져 있다.
byte는 1byte 8bit로 이루어져 있다.
int 타입 변수의 메모리 (3 + 1)byte에서 3인 부분이 삭제돼서 byte 타입 변수에 들어가게 되는 것이다. 즉 1인 부분만 byte에 할당되는 것이다.

위에서와 반대로 byte에서 int로 간다고 치면 앞에 3byte(0000 0000 0000)가 붙어서 int 변수에 할당되는 것이다




출처 :
https://stage-loving-developers.tistory.com/8
http://www.tcpschool.com/java/java_datatype_basic