SHUSTORY

02-5 형 변환 본문

프로그래밍/JAVA

02-5 형 변환

어서오시우 2023. 2. 19. 19:57
728x90

형 변환

정수와 실수는 컴퓨터 내부에서 표현되는방식이 전혀 다르다.

따라서 정수와 실수를 더한다고 할 때 그대로 연산을 수행할 수 없고 하나의 자료형으로 통일한 후 연산을 해야 한다.

이 경우 형 변환이 이루어진다.

 

형 변환에는 묵시적 형 변환(자동 형 변환)과 명시적 형 변환(강제 형 변환) 두 종류가 있다.

* 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다.

* 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다.

화살표 방향으로 묵시적 형 변환이 일어나며, 반대로 형 변환을 하려면 강제로 변환해야 한다.

화살표 방향으로 형 변환이 이루어질 때는 자료 손실이 없지만, 그 반대인 경우에는 자료 손실이 발생할 수도 있다.

 

 

묵시적 형 변환

바이트 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우

예를 들어 byte형 변수의 값을 int형 변수에 대입할 경우,

1바이트 크기의 값을 4바이트 자료형의 변수에 대입하게 되므로 자료 손실 없이 형 변환이 이루어지며

남은 3바이트는 0으로 채워진다.

 

덜 정밀한 자료형에서 더 정밀한 자료형으로 대입하는 경우

두 변수의 크기가 같은 4바이트라도 정수형보다 실수형 자료형이 더 정밀하게 데이터를 표현할 수 있으므로

실수형인 float로 전환된다.

 

연산 중에 자동 변환되는 경우

마지막 행에서 두 번의 형 변환이 이루어진다.

먼저 fnum + iNum에서 int 형이 float형으로 변환되고, 두 변수를 더한 결과 값이 double 자료형으로 변환된다.

이와 같이 바이트 크기가 작은 수에서 큰 수로,

덜 정밀한 수에서 더 정말한 수로 자료형이 변환되는 경우에 자동 현 변환이 일어난다.

예제01

 

명시적 형 변환

바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우

예를 들어 1바이트인 byte형은 int형보다 크기가 작기 때문에 자료 손실이 발생할 수 있다.

그렇기 때문에 프로그래머가 변환할 자료를 명시적으로 써 주어야 하며 이를 강제 형 변환이라고 한다.

 

더 정밀한 자료형에서 덜 정밀한 자료형으로 대입하는 경우

위와 같은 경우 명시적 형 변환이 이루어지는 과정에서 자료 손실이 발생해 출력할 경우 3이 출력된다.

 

연산 중 형 변환

예제02

위와 같이 같은 연산이라도 형 변환이 언제 이루어졌는지에 따라 그 결과 값이 다르게 나타날 수 있다.

'프로그래밍 > JAVA' 카테고리의 다른 글

04-1 조건문  (0) 2023.02.20
03-1 기본 연산자  (0) 2023.02.20
02-4 상수와 리터럴  (0) 2023.02.19
02-3 변수가 저장되는 공간의 특성, 자료형  (0) 2023.02.19
02-2 변수란 무엇일까?  (1) 2023.02.19