자동형변환 (암묵적 형변환)
- 데이터 손실이 없는 한에서 자동으로 형변환됨.
- 화살표 방향 순서대로만 자동 형변환 가능.
- 실수는 지수 표현식으로 표현되므로 long -> float 형변환 가능.
byte(1) -> short(2), char(2) -> int(4) ->
long(8) -> float(4) -> double(8)
수동형변환 (명시적 형변환)
1. 문자-> 숫자
String strNum = "1";
int intNum = Integer.parseInt(strNum);
double doubleNum = Double.valueOf(strNum);
float floatNum = Float.valueOf(strNum);
long longNum = Long.parseLong(strNum);
short shortNum = Short.parseShort(strNum);
2. 숫자 -> 문자
int intNum = 10;
String strNum = "";
strNum = String.valueOf(intNum);
strNum = Integer.toString(intNum);
strNum = intNum + "";
3. 정수 <--> 실수
double doubleNum = 1.12345;
float floatNum = 1.123;
int intNum;
intNum = (int)doubleNum;
intNum = (int)floatNum;
데이터오버플로우 (DataOverFlow)
int num = 290;
byte byteNum = (byte) num;
byte
는 256개 표현가능. 그러나 num
은 290이므로 290-54 = 34
int보다 작은 타입 연산시 주의사항
byte byteNum1 = 10;
byte byteNum2 = 20;
byte intResult = byteNum1 + byteNum2;
컴파일 오류가 나는 이유
byte+byte
타입은 자동으로 int+int
로 변환되므로
변수의 데이터타입이 byte
가 아닌 int
여야함.
char 타입에 int값을 대입할 수 있다.
char a = 97;
System.out.println('a' + 100);
System.out.println('a' + "a");
- char a의 값이 97인 이유는 아래의 아스키코드 테이블 참조