형변환
데이터 크기 비교
# byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
자동형변환
- 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 자동 형변환이 일어남
- float는 4바이트이지만 표현할 수 있는 값의 경우의 수가 정수형보다 크다.
- int형보다 작은 데이터타입의 연산은 자동으로 int형으로 형 변환이 이루어짐
byte b = 10;
int s = b; // byte가 int형으로 자동 형변환
short i = b; //byte가 short형으로 자동 형변환
long l = b; //byte가 long형으로 자동 형변환
char c = '가';
int j = c; // char가 int형으로 자동 형변환
System.out.println("가 의 유니코드 숫자값 : " + j);
int k = 1000;
double d = k; //int -> double
System.out.println(d);
명시적 형변환
- 크기가 큰 데이터를 작은 데이터 타입으로 변환할 때에는 앞에 (data type) 을 붙여준다. ex)char c = (char)i;
int i = 70;
char c = (char)i;
short s = (short)i;
double d = 3.14;
int k = (int)d;
System.out.println(c);
System.out.println(s);
System.out.println(k);
/*
* 캐스팅을 할 때 주의할 점
* 해당 값을 받을 수 없는 범위가 들어오면 잘려나간 값 (쓰레기값)이 저장 됩니다.
*/
int a = 1000;
byte b = (byte)a;
System.out.println(b);
/*
* char, short는 크기가 같지만
* 문자형과 숫자형이기 때문에 형변환이 필요
*/
char cc = 'A';
short ss = (short)cc;
연산에서의 형변환
//연산에서의 형변환
char c = 'C'; //67
int i = 2;
System.out.println(c + i); //69
//1.서로 다른 타입의 연산에서는 큰타입을 따라갑니다.
char cc = (char)(c + i);
int ii = c + i;
System.out.println(cc); //E
System.out.println(ii); //69
//2.int형보다 작은 타입의 연산의 결과는 int가 됩니다.
byte b1 = 100;
byte b2 = 10;
byte b3 = (byte)(b1 + b2);
//int b3 = b1 + b2;
short s1 = 100;
byte s2 = 10;
short s3 = (short)(s1 + s2);
int j = 10;
double d = 3.14;
double result = j + d;
System.out.println(result);
2022.09.21.wed / course2
'Java' 카테고리의 다른 글
TIL 7 | Java - Scanner / Math.random() (0) | 2022.09.27 |
---|---|
TIL 6 | Java - Operator : 연산자 (0) | 2022.09.27 |
TIL 4 | Java - Variable : 변수 (0) | 2022.09.21 |
TIL 3 | Eclipse 단축키, sysout (0) | 2022.09.20 |
TIL 2 | Eclipse - new java project & class /export, import (0) | 2022.09.20 |