Java 기본 변수

java 2011. 8. 25. 15:05 Posted by jiddong


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