프로그래머 공간/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
반응형