자료형변환이란?

:  변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것을 의미합니다.  

 

1) 자동 형변환

 

자료형도 다르고, 메모리의 크기도 다르다. 원칙적으로는 error 나와야 하는데 왜 출력이 잘 될까?
더 큰 용량에 저장해주는 것은 원데이터의 손실 없이 저장해주는데 문제가 없습니다. 이와 같이 자바 스스로 자료형을 바꿔주는 것 = 자동형 변환 이라고 합니다.

unicode(int,4byte), alphabet(char,2byte)
		
System.out.println(alphabet); // 출력 : A
System.out.println(unicode); // 출력 : 65

 

char -> int 로 자동형변환 해준 것 입니다.

 

(주의)

 short unicode; unicode = alphabet;  -- error

같은 2byte지만 short는 음/양수를 모두 가지고 있기 때문에 char의 값이 다르므로 error 일으킵니다.

 

 

2) 강제형변환 

 

값을 맞추기 위해서 데이터 손실할 수 가능성도 있지만 그 값을 강제로 버리고 변환시키는 것입니다.

int score1 = 23.5;  int = double 은 불가능!  데이터가 손실됩니다. 
소수점 이하를 버리고 정수의 값만 취해서 int에 넣으려고 한다면?? 어떻게 해야할까요? 
		
int score1 = (int)23.5; // 자료형을 int로 강제로 변환 시킨것이다. 
System.out.println(score1); // 23

 

주의)

double num = 23.5;
int score = (int)num; 강제형변환이 되었다고 해서 num의 값이 바뀌는 것은 아닙니다.
		              실수형을 알아서 정수형을 바꿔서 출력해줍니다. 
System.out.println(score); // 23
System.out.println(num); // 23.5

 

 

문제) 다음과 같은 오류를 풀어낼 수 있는 방법은 무엇일까요?

	int sum = 0.5 + 10;  -- error

int sum = 0.5(double) + 10(double)자동 형변환
int sum = 10.5(double);
int 의 형태로 double이 형변환이 되지 않기 때문에 error 가 나타난것입니다.

 

해결점)

 1) double sum = 0.5 + 10;
 2) int sum = (int)(0.5+10);

 

3) 명시적변형

 

(int)는 생략해도 되지만 가독성을 높이기 위해서 하는 것 : 명시적 형 변환 입니다.

unicode = (int)alphabet;

 

'빅데이터 > JAVA' 카테고리의 다른 글

[JAVA] 반복문(While문, Do While문, For문)  (0) 2020.04.25
[JAVA] 조건문(If , Switch)  (0) 2020.04.22
[JAVA] 연산자 (Operator)  (0) 2020.04.21
[JAVA] 상수(literal)  (0) 2020.04.21
[JAVA] 변수(Variable)  (0) 2020.04.20

+ Recent posts