본문 바로가기

프로그래밍/자바의 정석

#6. 변수의 타입

#6. 변수의 타입

1. 변수의 타입

1) 변수의 타잊은 저장할 값의 타입에 의해 결정된다.

- int age = 25;    // age [25] 

   ㄴ 정수    ㄴ 정수   : 변수와 값의 타입 일치

- int age = 3.14;   // age [???] 

   ㄴ 정수    ㄴ 실수 : 변수와 값의 타입 불일치

2) 저장할 값의 타입과 일치하는 타입으로 변수를 선언

- char ch = '가';  //  ch[가] 

    ㄴ 문자형 ㄴ 문자  : 변수와 값의 타입 일치

- double  pi = 3.14;  // pi[3.14]

    ㄴ실수형      ㄴ 실수  : 변수와 값의 타입 일치

 

2. 값의 타입

1) 값 - 문자  - char

            ㄴ 가나다ABC

       - 숫자   - 정수 - byte, short, int, long

                       ㄴ 0, 25, -100

                  - 실수 - float, double

                       ㄴ 3.14, -0.1

       - 논리   - boolean 

                        ㄴ true, false

 

3. 변수의 타입은 크게 기본형과 참조형

1) 기본형(Primitive type)

- 논리형 : boolean

- 문자형 : char

- 정수형 : byte, short, int,   long

              ㄴ1    ㄴ2   ㄴ4   ㄴ8byte

- 실수형 : floatm double

* 오직 8개

- 실제 값을 저장    

 

2) 참조형(Reference type)

- 기본형을 제외한 나머지 (String, System... 등)

- 메모리 주소를 저장(4byte 또는 8byte)

                              ㄴ40억      ㄴ40억*40억 : 160경 byte

   Date today; // 참조형 변수 today를 선언

    ㄴ 8개의 변수가 아니므로, 참조형 변수

   today = new Date(); // today에 객체의 주소를 저장

                   ㄴ 객체 생성. 객체의 값이 100이라면 today에는 100이 들어감

   * 참조형 변수 = 객체의 주소를 저장

 

4. 기본형 - 종류와 크기

1) 논리형 : boolean 

- true와 false 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용된다.

2) 문자형 : char

- 문자를 저장하는데 사용됨, 변수 당 하나의 문자만을 저장할 수 있다.

                                                   ㄴ 여러문자는 String

3) 정수형 : byte, short, int, long

- 정수 값을 저장하는데 사용된다. 주로 사용하는 것은 int와 long.

                                                                               ㄴ아주 큰 정수에 사용

- byte는 이미지나 실행 파일고 ㅏ같은 이진 데이터를 다루는데 사용.

- short는 c언어와의 호환을 위해 사용되나 잘 안쓰인다.

4) 실수형 : float, double

- 실수 값을 저장하는데 사용된다.

 

종류 / 크기(byte) 1 2 4 8
논리형

boolean

- true

- false

     
문자형  

char

- 유니코드 (2byte)

   
정수형 byte short

int

- 기본 타입

long
실수형     float

double

- 기본 타입

* 1bit = 2진수의 1자리,  1byte = 8bit

* int보다 작으면 short, 길면 long으로 외우면 편함

* floating의 2배라 해서 double로 외우면 편함 (정밀도가 2배)

 

5. 기본형 - 표현범위

* byte b;                           1byte =(8bit)    

         b=3;   //  b[3]   -> b|0|0|0|0|0|0|0|1|1|             ->3(10) = 11(2) // 10진수의 3은 2진수의 11이다.

                                     ㄴ 1bit : 2진수의 한자리 (0, 1)

          1bit = | |       2bit = | | |

           0,1 = 2개      00,01,10,11 = 4개 

                   ㄴ 2의 1승                ㄴ2의 2승

n비트로 표현할 수 있는 값의 개수 : 2의 n승개

n비트로 표현할 수 있는 부호없는 정수의 범위 : 0~2의 n승-1 // 2의 8승의 경우, 0~255

                                        ㄴ양수 1 ~2의 n승

n비트로 표현할 수 있는 부호있는 정수의 범위 : -2의 n-1승 ~ 2의 n-1승-1

                                                                               // 2의 8승의 경우, -2의 7승~2의 7승-1, -128~127

 

* byte -2의 7승 ~ 2의 7승-1

 | S | 7 bit |

   ㄴ 부호비트(Sign bit)

= | 0 | 7bit |   // 128(2의 7승)     0,1의 총합 : 256개 (2의 8승)

   | 1 | 7bit |   // 128(2의 7승)

 

* short -2의 15승~2의 15승-1

    ㄴ 2byte = 16bit

  | S | 15 bit |   // 32768(2의 15승)  범위 : -32,768~32,767

* char 0~2의 16승-1

    ㄴ 문자는 부호없음 = 부호없는 정수의 범위 : 0~2의 n승-1

  | 16bit | 

 

* int -2의 31승~2의 31승-1   // 2의 31승 = 20억

   ㄴ 4byte = 32bit

  | S |  31bit |

 

* long -2의 63승~2의 63승-1  // 2의 63승 = 800경

    ㄴ 8byte = 64bit

  | S | 63bit |

 - long 이상의 수(800경) 이상을 희망하면 double or bigint로 진행

 

* float와 double

- 둘다 큰 범위이나, 정밀도를 위해 double 을 사용

- 나중에 다시 교육 예정.