JAVA - 기본형의 형 변환

ahk·2021년 4월 8일
0

JAVA

목록 보기
1/5
post-thumbnail

자바에서의 타입변환
: 어떤 데이터 타입이 다른 데이터 타입으로 변하는 것

1. 자동 타입 변환

byte < short < int < long < float < double
( char )

➡➡➡➡➡➡➡➡자동변환➡➡➡➡➡➡➡➡

  • 값의 표현 범위가 작은 타입이 표현 범위가 큰 타입으로 저장될 때 발생합니다.

  • 자바 컴파일러에 의해 자동으로 형변환이 일어납니다. 형변환이 일어나도 결과는 같습니다

  • float타입(4byte)이 long타입(8byte)보다 메모리크기가 적지만, float과 double와 같은 실수가 더 큰 표현범위를 가지기 때문에(지수표현법) 자동형변환에서는 int, long보다 더 큰 타입이 됩니다.


# 2. 강제 타입 변환

  • 표현범위가 큰 데이터 타입을 작은 데이터 타입으로 변환할 때 사용합니다
  • 작은 데이터 타입보다 표현범위가 넓어 overflow(넘침)가 발생할 수 있습니다
  • 반드시 우변의 데이터 앞에 형변환 연산자(casting)을 사용하여 강제 타입변환을 해줘야합니다
  • 강제 형 타입변환 후의 데이터는 원본 데이터와 다를 수 있습니다
  • 하지만 작은 데이터 타입의 표현범위 이내의 데이터일 경우, 강제 형변환 후에도 원본 데이터가 유지될 수 있습니다!
int a = 3;
byte b = (byte)a;


=> 강제 타입변환 후에도 a는 byte의 표현범위 이내이고
   overflow가 없기에 원본데이터가 유지된다.

char야 어디있니

char 타입과 byte & short 타입 간의 관계

🥕 byte타입(1 byte) : -128 ~ 127
🥕 short타입(2 byte) : -32768 ~ 32767
🥕 char타입(2 byte) : 0 ~ 65535

  • char타입은 양수의 표현범위에서는 byte, short보다 크지만, 음수 범위에서는 byte, short가 더 크다
    => 어떤 타입이 더 크다고 이야기할 수 없다.

=> 따라서 char타입과 byte, short타입간에는 자동형변환이 일어나지 않으므로 꼭! 강제 타입 변환을 해줘야한다.

profile
아웃풋을 위한 뫄뫄의 벨로그

0개의 댓글