본문 바로가기
Programming/JAVA

3-2 자료형의 변환

by CGS 2018. 8. 26.

short형 변수 num1과 num2 가 있고 각각 10, 20으로 초기화 했다고 쳐봅시다.


이 두 변수를 덧셈연산할때, int형 데이터로 변환된 다음에 연산이 이루어지게 됩니다.


short형으로 선언했을때는 각각


00000000 00001010

00000000 00010100


으로 저장되어있는데,


덧셈 연산이 진행되면,


int형으로 바뀌면서


00000000 00000000 00000000 00001010

00000000 00000000 00000000 00010100


으로 2바이트에서 4바이트로 변환되며 0으로 채워지게 됩니다.


즉, 형 변환은 값의 표현 방식을 바꾸는 것이라고 할 수 있습니다.


수학공부할때 연산을 정수끼리, 실수끼리 연산만 하지 않듯이


실수와 정수끼리 연산을 하게 될 경우엔 표현법을 하나로 통일해서 연산을 하게 됩니다.


그럴때 "자동 형 변환"이 발생하게 됩니다.


double num1 = 22; 라고 선언하면 자료형을 실수형으로 선언했으나 초기화는 정수형 표현을 사용했습니다.


이런 경우에 자동으로 22.0으로 형 변환이 일어납니다.


int num2 = 22.2; 라고 선언하면 자료형을 정수형으로 선언하고 초기화는 실수형으로 표현했습니다.


이 경우엔 22라고 형 변환이 일어날까요?


변환되지 않고 컴파일 오류가 발생할 것입니다. 데이터의 손실이 생겼기 때문이죠.


자바에서 자동 형 변환은 데이터의 손실이 일어나지 않는다거나 발생하더라도 그 손실이 제한적인 경우에만 자동 형 변환을 허용합니다.


자동 형변환 규칙은


이런 식으로 이루어집니다.


그렇다고 방법이 없는 것은 아닙니다. "명시적 형 변환" 이라는 것이 있죠.


자동 형 변환 규칙에 위배되는 상황이지만 형 변환이 필요한 경우엔 "명시적 형 변환"을 활용하여 형 변환을 할 수 있습니다.



public class CastingOperation {


public static void main(String[] args) {

// TODO Auto-generated method stub

char ch1='A';

char ch2='Z';

int num1=ch1;

int num2=(int)ch2;

System.out.println("문자 A의 유니코드 값 : "+num1);

System.out.println("문자 Z의 유니코드 값 : "+num2);

}


}


결과 : 


문자 A의 유니코드 값 : 65

문자 Z의 유니코드 값 : 90


초기화 할 값에 "(자료형)"을 입력하여 형 변환을 명령할 수 있습니다.


 



'Programming > JAVA' 카테고리의 다른 글

4-2 자바에서 제공하는 단항 연산자들  (0) 2018.08.27
4-1 자바에서 제공하는 이항 연산자들  (0) 2018.08.26
3-1 상수  (0) 2018.08.21
2-3 실수 표현방식의 이해  (0) 2018.08.17
2-2 정수 표현방식의 이해  (0) 2018.08.17