1 Bit
- 0 과 1 로된 단위
1Byte
- 8 bit 로 구성 0000 0000 이것은 16진수로 0X00 으로 표현
Java 기본형(Primitive type)
우선 Java 는 데이터를 다루는 최소의 단위가 1Byte임을 알자
1 Byte (8 Bit) | 2 Byte (16 Bit) | 4 Byte (32 Bit) | 8 Byte (64 Bit) | |
논리형 | boolean | |||
문자형 | char (unsinged) | |||
정수형 | byte | short | int | long |
실수형 | float | double |
boolean
- 저장 가능한 범위 true/ false
- Java 가 데이터를 다루는 최소 범위가 1 Byte 이기 때문에 낭비적이긴 하지만 1 Byte 사용
char
- Java의경우 Unicode 를 사용 동양의 글자의 경우 2 Byte 필요하기때문에 char 의경우 2 Byte 이용
- Java 에서 유일하게 제공되는 unsinged 형태 (음수 가존재 하지 않음 )
* 2 Byte = 16진수 0x00 = 0000 0000 0000 0000
맨앞 1 Bit를 가지고 음수나 양수 를 나타냄 하지만 char 형은 unsinged 형식이기 때문에
맨 앞 비트를 음수 양수 형식 으로 사용하지 않음
char 형이 1111 1111 1111 1111 의 Bit를 가지고 있을때 10진수의 값 65535
short 형이 1111 1111 1111 1111 의 Bit를 가지고 있을때 10진수의 값 -1
- char a = 'A'; b = 'B'; 일때 if (a > b) 가 가능한이유
* char 형은 유니코드 정수형태로 저장 char a = 'A' 일시 a변수에는 'A' 의 정수 값인 65가 들어감
byte , short , int , long
- 각형의 표현범위
byte | -128 ~ 127 (-2의 7승 ~ 2의 7승 -1 ) |
shot | -32,768 ~ 32,767 (-2의 15승 ~ -2의 15승 -1) |
int | -2147483648 ~ 2147483647 (-2의 31승 ~ 2의 31승 -1) |
long | 무지큼;;; (-2의 63승 ~ 2의 63승 -1) |
- byte, short 가 더적은 Bit를 가지고 있어 메모리를 조금더 절약할수 있지만 int를 사용하자
* JVM 의 피연산자 스택이 피연산자를 4 Byte 단위로 저장 하기 때문에
int 보다 작은 자료형의 값을 계산시 int 형으로 형변환 되서 연산이 수행됨
- 요기서 질문 int 1 과 -1을 bit 형태로 표현하면?
* int 1 = 4 byte = 32 bit
0000 0000, 0000 0000, 0000 0000, 0000 0001
int -1 = 4 byte = 32 bit
1111 1111, 1111 1111, 1111 1111, 1111 1111
int -2 = 4 byte = 32 bit
1111 1111, 1111 1111, 1111 1111, 1111 1110
int -3 = 4 byte = 32 bit
1111 1111, 1111 1111, 1111 1111, 1111 1101
맨처음 singed Bit 를 보고 1일경우 음수이기 때문에
앞의 첫번째 Bit 부터 0이 나올때까지 모든 Bit 를 1로 변경해주면 음수가 됨
Test Code
int shTemp = 0;
shTemp = ~shTemp; // 1의 보수 표현(not) 각 비트를 반전시킨 값을 반환한다.
System.out.println("short ::"+shTemp);
출력 값 short ::-1
float, double
- float 보다 double 이 약 두배의 정밀도를 가지고 있음
- 정수형에서 기본 자료형이 int 형이듯 실수형에서는 double 형이 기본자료형이기 때문에
float pi = 3.14F 뒤에 붙은 리터럴형을 사용하지 않으면 double 형으로 사용된다
* float pi = 3.14; 이면 오류 발생 float 형 변수에 double 형을 저장할수 없음.
- double Temp = 1e-3; 이란 ?
* e 뒤에 붙은 숫자가 10의 몇승을 나타냄
지금 1e-3의 경우 10의 -3승 으로서 0.001 과 같음
1e3 == 1000 (10의 3승 )과 같음
'java' 카테고리의 다른 글
정규 표현식 기본 (0) | 2012.11.23 |
---|---|
Java Thread Pool 좋은 글(Object Pool Control) (0) | 2010.12.17 |