min's devlog
형변환(Casting) 본문
형변환 (Casting)
형 변환의 의미
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 말한다. 프로그램에서 값의 대입이나 연산을 수행할 때는 같은 타입끼리만 가능하기 때문에, 연산을 수행하기 전에 같은 타입으로 만드는 작업이 필요하다.
- 코드를 유연하게 작성하기 위한 도구이기도 하다.
1. 암시적 형변환 (= 자동 타입 변환)
- 큰형 = 작은형, 100% 안전한 타입
- short = byte; //2칸 = 1칸
- int = byte; //4칸 = 1칸
- long = byte; //8칸 = 1칸
- int = short; //4칸 = 2칸
- long = short; //8칸 = 2칸
- long = int; //8칸 = 4칸
int i = 100;
char c = 'a';
int j = c; // char 타입에서 int 타입으로 자동 변환.
double d = i; // int 타입에서 double 타입으로 자동 변환.
System.out.println("int타입 변수 j의 값 : "+j);
System.out.println("double타입 변수 d의 값: "+d);
실행 결과
int타입 변수 j의 값 : 97
double타입 변수 d의 값 : 100.0
2. 명시적 형변환 (= 강제 타입 변환)
- 작은형 = 큰형
- 작은형이 소화할 수 있는 범위의 원본값이면 복사가 가능하고, 작은형이 소화할 수 없는 범위의 원본값이면 손실분이 생긴다. > 데이터의 손실이 발생할 수도 있고, 발생하지 않을 수도 있다.
- 데이터의 손실이 일어난다면 정확한 연산이 불가능하기 때문에 예상하지 못한 결과를 얻을 수 있다. 그러므로 강제 형변환시 개발자의 주의를 요함!!
//int -> byte 강제 형변환(값이 작을 경우)
int i = 10;
byte b = (byte)i; //강제 형변환을 하지 않으면 에러 발생.
System.out.println("[int -> byte] i의 값 :"+i+" b의 값:"+b);
//int -> byte 강제 형변환(값이 큰 경우)
int j = 1000;
byte c = (byte)j; //강제 형변환을 하지 않으면 에러 발생.
System.out.println("[int -> byte] j의 값 :"+j+" c의 값:"+c);
실행 결과
[int -> byte] i의 값 :10, b의 값:10
[int -> byte] i의 값 :1000, b의 값:-24
'til > Java' 카테고리의 다른 글
Java 달력 만들기 (0) | 2022.03.17 |
---|---|
연산자(Operator) (0) | 2022.03.10 |
Output과 Input (0) | 2022.03.08 |
변수(Variable) (0) | 2022.03.07 |
자료형 (Data Type) (0) | 2022.03.07 |
Comments