3-1. 데이터 크기
- bit (비트) 가장 작은 단위 / 0, 1이다.
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 |
3-2. 데이터 타입
1. 정수형 : 소수점이 없는 숫자
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
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만 사용해도 충분히 커버가 가능하다.
① 변수선언과 초기화는 아래와 2가지와 같은 방법을 한다.
byte / short / int / long 변수명;
변수명 = 정수;
byte / short / int / long 변수명 = 정수;
ex. 우리나라 행정구역을 숫자로 표시한다고 가정하였을때,
byte district = 1; //경기도
ㄴ 행정구역이 127개 이상이 되지 않으니 byte로 사용 가능하다.
※ System.out.println(); 출력을 해줄때, 변수같은 키워드와 " " 안의 문자열을 함께 출력할 때에는 + 로 연결해준다.
byte 에 5555555를 저장하려고 하니, 데이터타입의 허용범위를 넘어 오류가 난 것이 보인다.
데이터타입의 허용범위에 맞는 값만 초기화해야하는 점 다시 한번 집고 넘어가자.
그런데, 다른 타입과 달리
long타입은 변수를 선언하고 값을 초기화할때 값과 함께 소문자나 대문자 L을 붙여주어야한다.
long a = 2147483648; > 오류발생
∴ long a = 2147483648L;
이유는, 2147483648이라는 값은 변수 a에 저장하기 전 임시 메모리에 저장되는데 이때 임시로 저장하기 위해 사용하는 기본데이터 타입은 int라 int로 표현할 수 있는 최대 숫자를 여전히 초과하고 있어 L를 붙여준다
2. 실수형 : 소수점이 있는 숫자
float | 4byte | ±(1.40129846432481707e-45 ~ 3.40282346638528860e+38) |
double | 8byte | ±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d) |
① 변수선언과 초기화는 아래와 2가지와 같은 방법을 한다.
float / double 변수명;
변수명 = 실수;
float / double 변수명 = 실수;
그런데, double 타입과 달리
float 타입은 변수를 선언하고 값을 초기화 할 때 값과함께 소문자나 대문자 F 를 붙여주어야 한다.
float a = 2.2; > 오류 발생
∴ float a = 2.2F;
이유는, float 의 데이터값을 변수에 저장하기 전에 이 값을 메모리에 임시로 저장하는데,
이때 저장되는 타입이 double 이다. 그러므로 F를 붙여준다.
3. 문자
char | 2byte | 모든 유니코드 문자 |
3-4. 형 변환
1. 형변환
데이터 타입(형식)을 변경하는 것 ( int → float / double 로 데이터 타입을 바꾸는것)
2. 자동 형 변환 (암/묵시적 형변환)
ㄴ 작은 공간의 메모리에서 큰 공간의 메모리로 이동
① double a = 3.0F; > 오류가 발생하지 않는다.
상수에 F를 붙인다면 타입에는 float가 들어가야 하는데,
float타입보다 double타입이 더 많은 수를 표현할 수 있기 때문에 오류가 발생하지 않는다.
② float a = 3.0; > 오류 발생
3.0 상수 형변환을 하지 않는다.
정수
byte → short → int → long → float → double
char
실수
∴ 자동 형 변환의 원칙은 표현범위가 좁은 데이터 타입에서 넓은 데이터 타입으로의 변환만 허용된다는 것이다.
예제.
int a =3;
float b = 1.0F;
double c = a + b;
1. a+b를 연산하기 위해서는 같은 데이터형이어야지만 연산이가능하여 첫번째 형변환이 일어난다.
참고자료 : byte - short,char - int - long - float - double 데이터의 크기 오름차순이다.
정수는 실수가 될 수 있기에 a를 실수로 변환한다.
a : 3.0F b = 1.0F 로 a+b = 4.0F
∴ double c = 4.0F
3. 명시적 형 변환 (수동으로 형변환)
① float a = 100.0; > 에러 발생
ㄴ 실수는 double 데이터타입을 채택하며 double형이 float보다 더 많은 데이터를 표현하고 자동형변환이 되지 않음
ㄴ float a = (float)100.0; > 정상작동
② int b = 100.0F; > 에러발생
ㄴ 실수를 정수변수에 넣게 되면 소수점 이하에 데이터가 손실되기에 에러발생
ㄴ int b = (int)100.0F; > 정상작동
'ON > 국비 전 독학' 카테고리의 다른 글
07. 배열이란 ? (0) | 2023.03.16 |
---|---|
05. 조건문이란? (0) | 2023.03.11 |
04. 연산자란 ? (0) | 2023.03.10 |
02. 변수란 ? (1) | 2023.03.08 |
01. 자바 프로그래밍이란 ? (0) | 2023.03.06 |