본문 바로가기
old/Java

기본 데이터 타입 변환=형변환

by 물 개 2020. 11. 14.

- 자동(묵시적) 타입 변환(Promotion)

작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생한다.

변환 이전의 값과 변환 이후의 값은 동일하다. 손실없이 보존된다.

byte (1) < short (2) < int (4) < long (8) < float (4) < double (8)

char는 2byte를 가지지만 음수가 저장될 수 없으므로 음수가 저장될 수 있는 타입은 char로 자동 변환되지 않는다.

char가 int로 자동 변환되면 유니코드 값이 int 타입 변수에 저장된다.

실수 타입은 정수 타입으로 자동 타입 변환 되지 않는다.

 

- 강제(명시적) 타입 변환(Casting)

강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것.

캐스팅을 할 경우 원래 값이 보존되지 않을 수도 있다. 안전하게 값이 보존됐는지 확인할 필요가 있다.

float 타입은 부동 소수 방식으로 값을 저장하며, 가수를 담는 비트수가 23bit 이기때문에 int 타입으로 캐스팅 했을 때 값이 바뀔 위험이 있다. 가수 비트 수가 52bit인 double 타입을 int 타입으로 변환하면 손실이 없다.

 

- 연산식에서의 자동 타입 변환

연산은 같은 타입의 피연산자(operand) 간에만 수행되기 때문에 서로 다른 타입의 피연산자가 있을 경우,

두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행한다.

또, 자바에서는 정수 연산일 경우 int 타입을 기본으로 하기 떄문에 그 보다 작은 타입은 int 타입으로 변환된 후 연산이 수행된다. 따라서 연산의 결과도 int 타입이 된다.

'old > Java' 카테고리의 다른 글

조건문(Conditional Statement)  (0) 2020.11.14
연산자(operator)와 연산식(expressions)  (0) 2020.11.14
데이터 타입(자료형) - 기본형  (0) 2020.11.14
리터럴(literal)  (0) 2020.11.11
변수  (0) 2020.11.11

최근댓글

최근글

skin by © 2024 ttuttak