충분히 쌓여가는
데이터 변환 본문
데이터를 한 형에서 다른 형으로 변환하고 싶은 경우가 있을수도 있음
이러한 데이터 변환은 변수의 데이터 형이나 그 안에 저장된 값을 바꾸지 않음
확장 변환
- 작은 크기의 데이터 형에서 더 큰 크기의 데이터 형으로 변환하는 것은 안전함
- ex. short 형 -> int 형으로 변환하는 것은 정보를 잃어버리지 않기 때문에 안전함
축소 변환
- 큰(혹은 복잡한) 데이터 형에서 더 작은(혹은 간단한) 데이터 형으로 변환될 때 정보를 잃어버릴 수 있음
- ex. double 형 -> int 형으로 변환하는 것은 소수점 이하 값을 잃어버림
- 꼭 필요한 경우가 아니면 가능한 피해야함
배정문 변환(assignment conversion)
- 한 데이터 형의 값이 다른 데이터 형의 변수에 저장될 때 일어남
int score = 7;
double value = score;
- score의 현재 값인 7을 double 형 실수 값으로 변환하여 value에 저장함
- 이때 변수 score 값이나 데이터 형은 변화하지 않음
승급 변환(promotion)
- 연산식에 있는 연산자들이 피연산자들을 변환할 때 자동적으로 일어남
double total = 85.2;
int count = 17;
double average = total / count;
- 나눗셈(/)을 수행하기 전 total이 실수형이므로 실수형 나눗셈을 수행하기 위해 count의 값이 정수형(int)에서 실수형으로 변환됨
강제 변환(casting)
- 강제로 형 변환을 하기 위해 변환되는 값 앞에 괄호 안에 변환되는 형을 넣음
double point = 3.8;
int answer = (int) point;
- double 형 변수의 값이 int 형 변수에 저장될 때 반올림하지 않고 소수점 이하의 값을 버림
- 이 과정에서 정보의 손실이 일어남
- 가장 강력하지만 위험한 방법으로 확장 변환, 축소 변환 모두 가능