1. 자동 형변환(묵시적 형변환)
--> 데이터타입의 크기가 작은 것에서 크기가 큰쪽으로는 자동적으로 형변환이 발생된다.
byte(1byte) --> short(2byte) --> int(4byte) --> long(8byte)
개미 병아리 강아지 사람
개미집 병아리집 강아지집 안방
float(4byte) --> double(8byte)
--> 정수타입은 실수타입으로 자동형변환이 발생한다.
char(2byte)
--> char타입은 int형으로 자동형변환이 발생한다.
public class Main_Casting {
public static void main(String[] args) {
//1. 자동 형변환(묵시적 형변환)
byte no1 = 100; // byte => 1byte -128 ~ 127
short sh = no1; // short => 2byte -32,768 ~ 32,767
// 위의 것은 short sh = (short)no1; 으로 되는 것이다.
// sh => 100
int in = sh; // int => 4byte -2,147,483,648 ~ 2,147,483,647
// 위의 것은 int int = (int)sh; 으로 되는 것이다.
// in => 100
long ln = in; // long => 8byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
// 위의 것은 long in = (long)in; 으로 되는 것이다.
// ln => 100
float ft = 1.234f; // float 단정밀도 소수점 이하 7자리까지 표현
// ft => 1.234
double db = ft; // double 배정밀도 소수점 이하 15~16자리까지 표현
// double db = (double)ft;
// db => 1.2339999675750732
2. 강제 형변환(casting)
--> 데이터타입의 크기가 큰것을 작은것으로 강제적으로 형변환 시키는 것을 말한다.
크기가작은타입 = (크기가작은타입)크기가큰타입
실수를 정수로 강제적으로 형변환하는 것을 말한다.
소수부는 무조건 절삭을 해버리고 정수만 나온다.
정수 = (정수)실수
double db2 = 1.23456789;
// db2 => 1.23456789
float ft2 = (float)db2;
// ft2 => 1.2345679
int in2 = 40000;
// in2 => 40000
short sh2 = (short)in2;
// sh2 => -25536 이상한 값이 나온다.
int in3 = 30000;
short sh3 = (short)in3;
// sh3 => 30000
long ln2 = 3000000000L; // long 8byte
// ln2 => 3000000000
float ft3 = ln2; // float 4byte
// 위의 것은 float ft3 = (float)ln2; 으로 자동형변환 된다.
// ft3 => 3.0E9
double db3 = 123.98765;
int in4 = (int)db3; //실수를 정수로 강제형변환하면 소수부를 잘라버리는 절삭의 효과를 가진다.
'Java' 카테고리의 다른 글
연산자(Operator) 5. bit 연산자 6. 논리 연산자 (0) | 2022.06.06 |
---|---|
연산자(Opperator) 2. 증감연산자, 3. bit 별 not 연산자, 4. 논리 부정 연산자 (0) | 2022.06.06 |
연산자(Operator) 1. 산술 연산자 (0) | 2022.06.06 |
자료형(Data Type) 2 (0) | 2022.06.06 |
자료형(Data Type) (0) | 2022.06.06 |