* 데이터 크기 * 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으로 노출됨
댓글