본문 바로가기

Programming/Java

DAY 16. [JAVA] 변수의 형변환(Casting) 종류와 정의

 

 

 

형변환(Casting)

 

정의

- 값(Data)의 자료형을 바꾸는 것이다. (boolean은 제외한다.)

즉, 데이터의 타입을 바꾸는 것

 

 

<컴퓨터의 값 처리 원칙>

  • 대입 연산자를 기준으로 왼쪽과 오른쪽은 같은 자료형이어야 한다. 즉, 같은 자료형에 해당하는 값만 대입이 가능하고 다른 자료형의 값을 대입하고자 할 때는 형변환이 필수다.
  • 같은 종류의 자료형만 대입 가능
  • 같은 종류의 자료형만 계산(연산)가능 ex. 10 + 13.5 (X)
  • 계산(연산)의 결과도 같은 종류의 자료형이 나와야 한다.

→ 이러한 원칙이 지켜지지 않을 경우에 형 변환을 사용한다.

 


형변환의 예시

(int) 123456789 ▶ (double) 123456789.0

(char) 'A' ▶ (int) 65

(float) 3.14f ▶ (int) 3

 

형변환을 하고자 하는 값과 그 값의 자료형의 표현 범위에 따라서 형변환의 방법이 나뉜다.

 

 


형변환의 종류

 

01. 자동 형변환(묵시적 형변환)

byte(1byte) → short / char(2byte) → int(4byte) → long(8byte) → float(4byte) → double(8byte)

 

  • 자동으로 형변환이 이루어지기 때문에 개발자가 형변환을 시켜줄 필요가 없다.

값의 범위(데이터의 표현 범위)가 작은 자료형을 값의 범위가 큰 자료형으로 변환한다. (자료형의 사이즈를 의미하는 것이 아니다.)

컴파일러가 연산을 할 때 자료형을 보고 판단해서 자동으로 자료형을 바꿔준다.

단, byte와 short의 자료형 값의 계산 결과는 무조건 int로 처리한다.

 

'값의 손실이 없이 그대로 보존된다' 는 뜻은 값의 변화가 없다는 말이다.

 

 

02. 강제 형변환(명시적 형변환)

값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환한다.

이 때, 형변환 연산자(cast 연산자)를 사용해야 한다.

값(데이터)의 손실이 발생할 수 있다. == 데이터의 변형과 손실을 감수하고 강제로 변환한다.

 

(바꿀 자료형) 값; 

-> 해당하는 값이 바꾸고 싶은 자료형으로 바뀐다.

 

double temp;

int name = **(int)**temp;

*여기서 사용 된 int는 "형변환 연산자" 가 된다.