JAVA공부기록[생활코딩]

[Java]왕초보 상수의 데이터 타입, 형변환 생활코딩입문

ssong2ku 2022. 3. 26. 13:12
728x90

[데이터의 크기]

8 bit 1 byte
1024 byte 1 kilobyte
1024 kilobyte 1 megabyte
1024 megabyte 1 gigabyte
1024 gigabyte 1 terabyte
1024 terabyte 1 petabyte
1024 petabyte 1 exabyte
1024 exabyte 1 zettabyte

 

[데이터의 타입]

●정수형

데이터타입 메모리의크기 표현가능범위
byte 1 byte -128 ~ 127
short 2 byte -32.768 ~ 32. 767
int 4 byte -2,147,483,648~2,147,483,647
long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

※ 어떤 데이터 타입으로 변수를 선언하느냐에 따라 사용하는 메모리의 크기가 달라짐!

변수에 들어올 수 있는 숫자 최대 크기를 잘 판단 후 데이터 타입을 지정해야 메모리 용량을 아낄 수 있음.

정수 저장 시 거의 int 사용!!!

ex) int a = 2147483647;
    long b = 2147483647;  -> 변수 b가 2배의 메모리 사용!

●실수형

데이터타입 메모리의크기 표현가능범위
float 4 byte ±(1.40129846432481707e-45 ~ 3.40282346638528860e+38)
double 8 byte ±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d)

 

●문자

데이터타입 메모리의크기 표현가능범위
char 2 byte 모든 유니코드 문자

 

[상수의 데이터 타입]

 

●상수(contant) : 변하지 않는 값

int a = 1; ->a는 변수, 1은 상수!   / 1 = 3; -> 컴파일 X, 고유한 값을 가지고 있고, 값을 변경할 수 없음(=상수)

 

●실수의 표현

float도 실수의 데이터 타입인데 double로 변경하라고 에러가 발생한다.

double로 변경하니 에러가 사라졌다. 즉, 실수형 상수의 데이터타입은 디폴트가 double이라는 것!

float형 변수에 값을 대입할 수 있는 방법은?

명시적으로 float형은 표시해주면 된다. 숫자 뒤에 'F' 붙이기! 

 

나는 왜 굳이 표시해주나 싶어서 친구한테 물어봤더니, 그냥 헷갈리지 않기 위해서

표시하는 거라고, 결과 출력에는 상관없으니 신경 안 써도 된다고 했다.

 

●정수의 표현

int는 데이터 타입이 정수인 상수의 디폴트 값!

최댓값을 초과했기 때문에 에러가 뜬다.

데이터 타입을 long으로 바꿔도 디폴트가 int이기 때문에, int의 최댓값을 초과하고 있다고 뜸!

숫자 뒤에 'L'을 붙여, 앞의 숫자가 Long 데이터 타입이라고 명시적으로 표현.

 

int 보다 작은 short이나 byte는 int형을 허용하기 때문에, 오류 발생 X

 

[형 변환]

 

●형 변환(Type Conversion) : 데이터의 타입을 변경하는 것.

 

-자동 형 변환 : 표현 범위가 좁은 데이터타입에서 넓은 데이터타입으로의 변환만 허용

                    타입을 변경해도 정보의 손실이 일어나지 않는 경우!

자동 형 변환 규칙

정수보다 실수가 더 광범위!!

2.2F는 double로 자동 형 변환. 반대로 표현범위가 좁은 float에서 double로의 형 변환은 안됨!

 

-명시적(Explicit Conversion) 형 변환

자동 형 변환이 적용되지 않는 경우 수동으로 하는 형 변환.

     (데이터 타입) 데이터 값;

 

-> int b = (int) 100.0F; 로 고쳐주면, 에러는 사라진다. 하지만 int로 데이터 타입이 바뀌었기 

때문에 소수점 이하 자리도 사라진다.

728x90