형 변환은 대입 연산자 오른쪽의 식을 평가한 데이터형을 왼쪽의 변수에 대입하고자 할 때 왼쪽의 데이터형이 오른쪽의 형보다 작거나 클 경우 일어난다.
왼쪽의 데이터형이 오른쪽의 데이터형보다 작을 경우 명시적인 형 변환을 해야하며 이때 정보를 잃을 가능성도 있다.
왼쪽의 데이터형이 오른쪽의 데이터형보다 클경우 자동적으로 형 변환이 일어난다.
자동적인 형 변환이 일어나는 순서는 다음과 같다.
byte → short(char) → int → long → float → double
자동적인 형 변환은 데이터형의 유효 범위가 작은 범위에서 큰 범위로 대입될 때 일어난다.
boolean형은 다른 기본 유형으로 또는 다른 기본 유형에서 boolean형으로 변환될 수 없으니 주의하기 바란다.
int a = 10;
long b;
b = a;
int형 변수 a를 long형 변수 b에 넣는다.
long형의 유효범위가 int형보다 크기 때문에 자동적으로 형 변환이 일어나 대입된다.
long > int 때문에 자동 형 변환
long a = 10;
float b;
b = a;
long형 변수 a를 float형 변수 b에 넣는다.
float형이 유효범위가 long형보다 크기 때문에 자동적으로 형 변환이 일어나 대입된다.
float > long 때문에 자동 형 변환
long a = 10;
int b;
b = (int) a;
long형 변수 a를 인트형 변수 b에 넣는다.
long형의 유효범위가 int형보다 크기 때문에 명시적으로 형 변환을 해주어야 한다.
long > int 때문에 명시적 형 변환 (자동 형 변환이 안됨)
long a = 10;
int b;
b = a; //자동으로 형변환이 안되기 때문에 Casting Exception 발생
int형 b에 long형 a를 형 변환없이 대입할 경우 오류 발생
float a = 10.0f;
int b;
b = (int) a;
float형 변수 a를 int형 변수 b에 넣는다.
float형의 유효범위가 int형보다 크기 때문에 명시적으로 형 변환을 해주어야 한다.
float형 a를 int로 형 변환없이 대입할 경우 오류 발생
실제로 java 프로그래밍을 하다보면 형 변환을 잘못 사용하거나 형 변환을 해주지 않아서 발생하는 오류들이 많다.
다행히 이클립스에서는 java 컴파일시 이렇게 잘못 입력한 코드들을 Exception 으로 표출 해준다.
개발자들은 Exception 난 부분을 확인 하면서 어디 부분의 코딩이 잘못 되었는지 확인하며 개발을 이어나가면 되겠다.
제가 작성한 글이 도움이 되셨다면 ♥공감을 꾹 눌러주세요
도움이 필요한 내용이 있으시다면 댓글도 남겨주세요
예외 상황에는 finally문 사용해 보도록 하자 (0) | 2020.04.29 |
---|---|
자바 예외 상황 발생시 던지세요 - java throw문 (0) | 2020.04.28 |
try/catch문 (1) | 2020.04.02 |
예외(Exception) (0) | 2020.04.01 |
for문 (0) | 2020.03.31 |