뚜벅이 한걸음

형 변환 본문

java

형 변환

뚜벅뚜벅뚜벅이 2022. 7. 9. 20:06
반응형

평소에 숫자를 계산할 때 3+ 3.14=6.14로 간단하게 계산 할 수 있다.

하지만 컴퓨터 내부에서는 정수와 실수가 표현되는 방식이 다르다.

따라서 연산을 바로 실행 할 수 없고 하나의 자료형으로 통일한 후 연산해야한다.

1) 묵시적 형 변환

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

byte i = 10;
int m = i; //byte 형 변수 1형 값을 int 형 변수 m에 대입함
 
② 덜 정밀한 자료형에서 더 정밀한 자료형으로 대입하는 경우
int iNum = 20;
float fNum = iNum;

두 변수의 크기가 같은 4바이트지만

float형이 더 정밀하게 데이터를 표현 할 수 있으므로 실수형인 float형으로 변환된다.

③ 연산중에 자동 변환하는 경우

int iNum = 20;
float fNum =iNum;
double dNum;
dNum = fNum + iNum;

fNum + iNumd에서 먼저 int 형이 float형으로 변환되고 , 두변수를 더한 값이 double형으로 대입된다.

2) 명시적 형 변환 (묵시적 형 변환과 반대)

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

강제형 변환 : 강제로 형을 바꿔주기 위해서 바꿀 형을 괄호로 써써 명시한다.

int iNum = 10;
byte bNum = (byte)iNum;

지금은 변수값이 10이지만 200을 byte형으로 변경하려고하면 byte가 담을 수있는 값을 넘어가기 때문에 자료의 손실이 일어날 수있다.

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

:실수에서 정수로 값이 대입되는경우 소수점이하 부분이 생략이되면서 덜 정밀한 자료가 된다.

int iNum = 10;
byte bNum = (byte)iNum;
double dNum = 3.14;
int iNum = (int)dNum;

연산 값은 3이 된다.

③ 연산 중 형 변환

double dNum1 = 1.2;
float fNum2 = 0.9f;

int iNum3 = (int)dNum1 + (int)fNum2;
int iNum4 = (int)(dNum1 + fNum2);

System.out.println(iNum3);
System.out.println(iNum4);

두 연산 값의 결과는 1과 2로 다르게 나오게된다.

우리가 사칙연산 할때 괄호먼저 계산해주는 것을 생각한다면 쉽게 이해 할 수 있다.

오늘도 화이팅^_^!

반응형

'java' 카테고리의 다른 글

기본 연산자(2)  (0) 2022.07.09
기본 연산자(1)  (0) 2022.07.09
상수  (0) 2022.07.09
기본 자료형  (0) 2022.07.09
변수  (0) 2022.07.09