Daily coding

Java Basic : day 1 - 데이터형 별 크기 / Type cast 본문

Language/Java_basic

Java Basic : day 1 - 데이터형 별 크기 / Type cast

sunnnkim 2019. 11. 19. 00:29

 

우선순위

boolean 1 byte

byte               1 byte -128 ~ 127

short             2 byte

int                 4 byte

long             8 byte

 

float 4 byte

double 8 byte

 

//byte ----> double 순으로 우선순위

 

char 2 byte

String   ?

 

 

 

Type Cast

자료형 변환 ( 자동 형변환 / 강제 형변환 )

 

 

//자동 형변환 : 더 작은 타입의 데이터를 더 큰 타입의 데이터로 자동으로 변환해줌

short sh = 123; // 2 byte

int i ; // 4 byte

i = sh; // 더큰 데이터 타입으로 자동 형변환 됨

System.out.println("i : " + i);

 

i = 2345;

//sh = i;

//더 큰 데이터 타입을 작은 데이터 타입으로 넣을 때 자동 형변환이 되지 않음

 

//강제 형변환 

: 더 큰 데이터 타입이 더 작은 데이터 타입으로 형변환하는 것은 명시적으로 표기해줘야 함 ( + 데이터 손실 가능 )

sh = (short) i ;

System.out.println(sh);

 

//long 타입도 L을 명시적으로 붙여줘야 함. 

//그렇지 않으면 기본형인 int가 됨

long l = 12343423223L;

float f = l;

System.out.println("f = " + f);

 

// E

// f = 1.2343423E10 ---> E * 10 : E = * , 10 => 10승 (10자리임)

 

double d = l;

System.out.println("d = " + d);

//float 가  double 보다 더 많은 자릿수를 보여줌

 

int number;

double dNumber = 123000.456;

//소수점을 떼 놓기 위해 캐스트 변환 (세금 등에서 계산 많이 씀)

number = (int)dNumber;

System.out.println("number = " + number);

 

 

int num1, num2;

double result;

num1 = 5;

num2 = 2;

result = num1 / num2;

// 자동형변환 : 2 --> 2.0

System.out.println("result : " + result); //2.0이 나온다.

 

// 둘 중 하나만 더블로 형변환을 하면 나머지도 자동으로 double형으로 형변환이 되어 연산 

result = (double)num1 / num2;

System.out.println("result : " + result); //2.5가 나온다.

 

 

// 1.2345e20

double f1 = 1.234567E3; //E3 = *10*10*10 임 

System.out.println("f1 : " + f1); //결과는 f1 = 1234.567

 

f1 = 123.4567E-2; //E-2 : * 1/10 * 1/10

System.out.println("f1 : " + f1); //결과는 f1 = 1.234567