프로그래머 공간/JAVA

[JAVA] 형 변환 : 데이터를 다른 종류의 상자로

ikohong 2019. 11. 30. 07:04
728x90
반응형

[JAVA] 형 변환 : 데이터를 다른 종류의 상자로

By i!kohong(아이코홍)

 


형 변환이란?

  • 어떤 데이터를 다른 타입의 데이터로 취급하는 방식

 

[형 변화의 예시]

 

하나의 데이터를 크기가 적거나 큰 상자로 복사할 때

byte b = 10;
int i = b;

특정 타입의 데이터를 다른 타입의 데이터로 사용할 때

char c = 'A';
int i = c;

연산의 결과를 다른 타입의 데이터로 사용할 때

 

형 변환의 종류

1. 자동(묵시적)형 변환(Automatic Type Conversion)

개발자가 별도의 작업을 하지 않아도 알아서 처리가 된다.

 

2. 명시적 형 변환(Explicit Type Conversions): Casting[캐스팅]

큰 용량의 상자에서 작은 용량의 상자로 옮기는 작업. 큰 데이터를 작은 공간에 옮기기 때문에 데이터 손실이 발생을 한다.

명시적 형 변환(캐스팅)하는 방법

상자이름 앞에 ()를 이용해서 원하는 데이터 타입만큼의 상자로 줄여준다.

int i = 10;
byte b = (byte)i;

 

데이터가 잘리는 경우

int i = 128;
byte b = (byte)i;
결과값 = -128

2의 7승 2의 6승 2의 5승 2의 4승 2의 3승 2의 2승 2의 1승 2의 0승
128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0
- 128 + 0 0 0 0 0 0 0

 

int i = 257;
byte = (byte)i;
결과값 = 1


참고

상자의 크기가 같더라도 변수의 타입이 다른경우

같은 크기의 공간을 차지 한다고 해도 타입이 다를시에 컴파일 애러가 발생을 한다.

, 명시적인 형 변환이 꼭 필요하다.

char c = 'A';
short s = c; //컴파일 에러
float f = 13.3F;
int i = f; //컴파일 에러

 

소수(double, float)'부호 + 지수 + 가수'의 형태가 되므로, 일반적인 형 변환의 법칙과는 다르다.

long l = 1234L;
float f = l;

컴파일이 에러없이 가능하다.

자료형이 바뀌는 경우

 

정수형/정수형 = 정수형

int x = 10;
int y = 3;
System.out.println(x/y);

  • 결과값 = 3

 

정수형/소수형 = 소수형

int x = 10;
double y = 3;
System.out.println(x/y);
  • 결과값 = 3.33333333333333335
728x90
반응형