여기저기 구멍난 자바 지식을 메우기 위해 정리하는 자바 기초 포스팅. 다시 정리하는 개념, 헷갈리는 개념, 새로 안 개념 위주. 이것이 자바다(신용권, 한빛미디어) 참고, 1편 떼기 목표.
뜻 : 데이터 타입을 다른 타입으로 변환하는 것을 의미한다. 데이터타입이 같지 않지만 함께 대입해야 하는 경우 등에 활용할 수 있다.
큰 크기 타입 = 작은 크기 타입
ex. long a = int b; -> b가 long으로 자동변환됨
단, byte 타입은 char로 자동 변환 불가. byte는 음수를 가질 수 있지만 char는 음수를 가질 수 없기 때문.
큰 타입을 작은 타입에 강제 저장하고 싶다면 강제 변환해줘야 한다.
작은 타입 = (작은 타입) 큰 타입
int intValue = 103000;
byte byteValue = (byte) intValue;
4 byte짜리의 int를 byte로 강제 변환한 코드. 큰 데이터타입을 작은 데이터타입으로 쪼개 저장하는 것을 강제 타입 변환 (캐스팅) 이라고 한다.
강제 타입 변환에서 주의해야 하는 부분
값을 변환할 때 값의 손실이 발생하면 안 되기 때문에, 완전하게 값이 보존되는지 확인할 필요가 있다.
byte(1) < short(2) <int(4) < long(8) <float(4) < double(8)
참고 : 표현할 수 있는 값의 크기가 float이 더 커서 long보다 크다고 표현했다.
char를 short로 변환할 수 없다.
char charValue ='A';
int intValue =10;
int intValue1 = byteValue;(가능)
int intValue2 = charValue;(가능)
short shortValue = charValue2;(컴파일에러)
byte byteValue =10;
char charValue ='A';
double doubleValue =5.7;
String strValue = "A";
int intValue =10;
작은거 = (작은거) 큰거
or 큰거 = 작은거
double var =(double) intValue; (가능)
double var = intValue; (가능)
byte var2 =(byte) intValue; (가능)
int var3 = (int) doubleValue; (가능)
char var4 = char(strValue);
char var5 = strValue.charAt(0);
String 타입은 char로 강제변환할 수 없으며,
char에 대입하고 싶을 경우
charAt(index)를 활용하면 된다.
char에 숫자를 더하면 유니코드로 변환된다.
예컨대
char charValue1 = 'A';
char charValue2 = 1;
int intValue = charValue1+ charValue2 ;
결과
intValue ==66 (유니코드 문자)
(char)intValue == 'B'