자바의 타입 형변환(Type Conversion)

도도링·2023년 6월 17일
0

자바 스터디

목록 보기
3/4

오늘은 자바의 타입 형변환에 대해 알아보려고 한다.

우선 타입 형변환이란,
하나의 타입을 다른 타입으로 바꾸는 것을 타입 형변환(type conversion), 타입 변환이라고 한다.
자바에서는 boolean형을 제외한 나머지 기본타입 간의 타입 변환을 자유롭게 수행 가능하다.

메모리에 할당받은 바이트의 크기가 상대적으로 작은 타입에서 큰 타입으로의 변환은 생략할 수 있다.
반면, 메모리에 할당받은 바이트의 크기가 큰 타입에서 작은 타입으로의 변환은 데이터 손실이 발생하여, 그 경우 자바 컴파일러에서 오류를 발생시킨다.

타입 변환의 종류로는 묵시적 타입 변환과 명시적 타입변환이 있다.

  • float은 부동소수점 방식으로 표현하여 표현 범위가 더 크기 때문에 long보다 byte 크기는 작지만 더 큰 타입으로 들어간다.

1. 묵시적 타입 변환(자동 타입 변환)

- 묵시적 타입 변환이란? 대입 연산이나 산술 연산에서 컴파일러가 자동으로 수행해주는
  타입 변환을 뜻한다.
- 작은 크기 타입에서 큰 크기 타입으로 저장될 때 자동으로 발생한다.
- 데이터 손실이 발생하지 않거나 데이터 손실 최소화한다.
- char타입은 문자 자료형이지만, 아스키 코드 숫자를 저장하기에 사실상 정수형 타입이다.

* 연산식 자동 형변환

- 데이터 연산은 기본적으로 같은 타입의 피연산자 간에만 수행되기 때문에,
  서로 다른 타입을 연산할 경우 작은 타입의 피연산자가 큰 타입으로 자동변환 후
  연산을 수행한다. 
- 정수 연산 시에 int 타입을 실수 연산 시에는 double 타입을 기본적으로 한다.

2. 명시적 타입 변환(강제 타입 변환)

- 명시적 타입 변환이란? 큰 타입을 작은 타입으로 자동으로 변환할 수 없어
  타입 캐스트 연산자를 사용하여 강제적으로 수행하는 타입 변환을 말한다.
- 변환 문법: (변환할 타입)변환할 데이터
		   --         -- 괄호 = 타입 캐스트(type cast) 연산자
- 문제점 : 강제적인 동작이므로 데이터 손실이 일어나는 경우가 있어
          정확한 연산을 수행하지 못하는 결과가 발생할 수 있다.

* 강제 타입 변환에서 정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피해야한다.

- 근사치로 변환되어 정밀도 손실 발생
- float값을 다시 int타입으로 변환하면 원래의 int값을 얻지 못한다.
- num1 ≠ num2
- 해결책: float 대신 double 타입 사용
<참조>
https://inpa.tistory.com/entry/JAVA-%E2%98%95-%ED%83%80%EC%9E%85-%ED%98%95%EB%B3%80%ED%99%98-%EC%A2%85%EB%A5%98-%EB%B0%A9%EB%B2%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC
http://www.tcpschool.com/java/java_datatype_typeConversion
https://kephilab.tistory.com/27

0개의 댓글