자료형변환이란?
: 변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것을 의미합니다.
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 |