본문 바로가기
개인공부

변수의 데이터타입, 형변환(암시적,명시적)

by 리승우 2022. 7. 13.

변수의 데이터타입
 
 * 데이터 크기
 * 8bit = 1byte
 * 1024byte = 1killobyte
 * ~~~~


 * 정수 데이터 타입
 * byte = 1byte = -128 ~ 127
 * short = 2byte = -32,768 ~ 32,767
 * int = 4byte = -2,147,483,648 ~ 2,147,483,647
 * long = 8byte = -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 * 데이터 타입을 선택적으로 설정해서 메모리 사용량을 절약하거나, 더 큰 사용량을 보장받을 수 있음

 


 * long a = 2154687
 * long b = 1
 * 두 개 모두 차지하는 용량은 똑같다.
 * long a = [dddddddddd] 차지
 * long b = [d         ] 차지
 * 변수를 선언함으로써 일정 수준의 메모리 용량을 미리 확보하는 것임.
 


 * 어지간하면 int를 사용하는 것이 좋음.
 * 이유 = 가장 CPU 처리속도가 빠르고, 충분히 큰 수를 표현할 수 있기 때문에
 


 * 실수 데이터타입
 * float = 4byte
 * double = 8byte
 * 실수를 사용할 때는 double을 사용하는 것이 대체적으로 좋음
 
 * 문자 데이터타입
 * char = 2byte = 모든 유니코드 문자   (문자는 글자 하나를 의미함)
 * "A" = 2byte  "AB" = 4byte

 * 상수의 데이터 타입 (상수 constant란 변하지 않는 값을 의미한다)
 * 아래 a는 변수이고, 1은 상수이다. (상수도 데이터타입이 있다)
 * a = 1;
 
 
float q = 2.2;
float e = 2.2f;
// ▲ 2.2가 float 데이터타입인 것을 명시적으로 지정해주어서 오류가 안 뜸
double w = 2.2;
궁금증 : 왜 2.2는 실수인데, double로만 인식되는거지?

int r = 2147483647;
int r = 2147483648;
long t = 2147483648;
// 애당초 2147483648이 int로 데이터 타입이 정해져있기 때문에 에러가 발생함
long y = 2147483648l;
// 위 지정으로 서로 일치시켜줌 (형변환을 통한 에러 해결)
byte u = 100;
// byte 와 short 데이터 타입은 int 변수를 사용하는 것이 허용됨 
// 100은 int 타입이나 그렇기에 byte 타입에 적용가능해짐
short i = 200;
// byte 와 short 데이터 타입은 int 변수를 사용하는 것이 허용됨
// 200은 int 타입이나 그렇기에 short 타입에 적용가능해짐


형 변환 = 자동형변환 = 암시적 형변환
int -> double
int -> float
으로 바꾸는 것을 의미함
자동 형 변환의 원칙
> 표현범위가 좁은 데이터 타입에서 넓은 데이터 타입으로의 변환만 허용됨
> doulbe-> float X
> float -> double O     float a = 3.0은 불가 (3.0상수는 double 임)

형 변환 = 수동형변환 = 명시적 형변환
> 기존 자동형변환 구조
float a = 100.0; >>> double 구조여서 더 작은 float으로 자동형변환이 안됨 (불가함)
int b = 100.0f; >>> float 구조로 바꾼 것을 더 작은 int로 자동형변환이 안됨 (불가함)

> 수동형변환 구조
float a = (float)100.0; >>> 가능
int b = (int)100.0f; >>> 가능
※ int b = (int)100.9f 시, b프린트하면 소수점 이하자리는 모두 제거하여 100으로 노출됨

'개인공부' 카테고리의 다른 글

반복문의 중첩  (0) 2022.07.15
반복문의 제어  (0) 2022.07.14
반복문  (0) 2022.07.14
조건문  (0) 2022.07.13
연산자 (대입/산술/비교/논리)  (0) 2022.07.13

댓글