형 변환(Casting)
1. 형 변환(Casting)
변수는 크게 기본형, 참조형이 있고 기본형에는 8가지의 자료형이 존재한다.
각 자료형 저장하는 값과 크기에 따라 나뉜다.
자료형 | 키워드 | 크기 |
---|---|---|
논리형 | boolean | 1byte |
문자형 | char | 2byte |
정수형 | byte | 1byte |
short | 2byte | |
int | 4byte | |
long | 8byte | |
실수형 | float | 4byte |
double | 8byte | |
참조형 | String |
서로 다른 형태의 값을 대입, 계산 하거나 출력 할 수 없기 때문에
필요 시 자료형을 변환하도록 한다. 이것을 형 변환이라고 한다.(boolean 제외)
형 변환은 ‘자동 형 변환’, ‘강제 형 변환’으로 나뉜다.
2. 자동 형 변환(묵시적 형 변환)
- 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환
- byte -> short -> int -> long -> float -> double
- 오른쪽으로 갈수록 범위가 큰 자료형
- byte / short 자료형은 무조건 int로 변환
public void casting() {
int i = 15;
double d = i; // 정수 'i'를 실수 'd'에 대입
System.out.println("d : " + d);
// 출력 결과
// d : 15.0
// int > double로 자동 형 변환
}
double이 int의 값의 범위보다 크기 때문에 자동으로 형 변환이 가능하다.
public void castingTest() {
int i;
char ch;
i = 'A';
ch = 65;
System.out.println("i : " + i);
System.out.println("ch : " + ch);
/* 출력 결과
* i : 65 // A를 유니코드로 변환 > i는 int 자료형이었기 때문에 자동 형 변환
* ch : A // 65를 문자로 변환 > ch는 char 자료형이었기 때문에 자동 형 변환
*/
}
3. 강제 형 변환(명시적 형 변환)
- 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환
- 데이터 손실 발생 가능
- 형 변환 연산자 사용
- () : cast 연산자
public void casting() {
// 변수 선언
int i;
double d;
int iSum ;
// 변수에 각 값을 할당
i = 10;
d = 10.5;
// 에러 발생: double 자료형인 'd'는 자신보다 작은 int 자료형(iSum)에 대입 불가 > 강제 형 변환 필요
// iSum = i + d;
// 'd'를 int 자료형으로 변환. 형변환 연산자 괄호 안에 변환할 자료형을 기입
// 'd'를 형 변환 하면서 소수점 아래는 삭제
iSum = i + (int)d;
// or 전체를 int 자료형으로 변환
// iSum = (int)(i + d);
System.out.println("i + d = " + iSum);
// 출력 결과: i + d = 20
}
동일한 자료형 ! 기억할 것!
그나저나.. 블로그에 카테고리 만들고 싶은데.. 오늘 하루 종일 삽질만 하고 못 만들었다.ㅠㅠ
내일 다시 도전!!!!!