byte(1) ➡️ short(2)/char(2) ➡️ int(4) ➡️ long(8) ➡️ float(4) ➡️ double(8)
<자동변환 되는 경우>
❗바이트 크기가 작은 타입에서 큰 타입으로 변환(ex) byte ➡️ int)
❗덜 정밀한 타입에서 더 정밀한 타입으로 변환 (ex) 정수 ➡️ 실수)
<수동 변환 되는 경우>
차지하는 메모리 용량이 더 큰 타입에서 작은 타입으로는 자동으로 타입이 변환되지 않음. 이때 우리는 수동으로 타입을 변환해주어야 함. 이를 캐스팅(casting)이라고 함.
수동으로 타입을 변환할 때는 캐스팅 연산자 ( )를 사용한다. 캐스팅 연산자의 괄호 안에는 변환하고자 하는 타입을 적어준다.
ex)
int a = 12;
byte b = (byte)a;
System.out.println(b); //12
정수형의 오버플로우/언더플로우
❓ 오버플로우
타입이 표현 할 수 있는 값의 범위를 넘어서는 것을 오버 플로우(overflow)라고 한다.
최대값을 넘어가면 해당 데이터 타입의 최소값으로 값이 변합니다.
ex)
int a = 128;
byte b = (byte)a;
System.out.println(b); //-128
byte형의 표현 범위는 -128~127이기 때문에 byte형으로 변환하면 표현 범위를 벗어나게 되어 오버 플로어가 발생. 따라서 -128이 됩니다.
❓ 언더플로우
실수형의 오버플로우/언더플로우
❓ 오버플로우
❓ 언더플로우
✅ String에서 int로 변환
Integer.parseInt()
Integer.valueOf()
ex)
String str1 ="100";
String str2 ="101";
int a = Integer.parseInt(str1);
int b = Integer.valueOf(str2);
System.out.println(a); //100
System.out.println(b); //101
✅ int에서 String로 변환
Integer.toString()
String.valueOf()
ex)
int a =100;
int b =101;
String str1 = Integer.toString(a);
String str2 = String.valueOf(b);
System.out.println(str1); //100
System.out.println(str2); //101
✅ char에서 int로 변환
Character.getNumericValue();
'0' 을 빼기 (아스키 코드 이용)
ex)
char ca ='2';
char cb ='5';
int ia = Character.getNumericValue(ca);
int ib = cb - '0';
System.out.println(ia); //2
System.out.println(ib);//5