[Variable] 기본형과 참조형

선영·2022년 7월 24일
post-thumbnail
  • 자료형(data type) : 값(data)의 종류(type)에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것
    • 기본형(primitive type)
      • 실제 값(data)을 저장
      • 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)
    • 참조형(reference type)
      • 어떤 값이 저장되어 있는 주소(memory address)를 값으로 가짐.
        ※ 메모리에는 1byte 단위로 일련번호가 붙어있는데, 이 번호를 '메모리 주소(memory address)' 또는 간단히 '주소'라고 함. 객체의 주소는 객체가 저장된 메모리 주소를 뜻함.
      • 8개의 기본형으로 제외한 나머지 타입.

기본형의 종류와 범위

  • 정수형 중에는 int가 기본이고, 실수형에서는 double이 기본임.
    • 1 bit = 2진수 1자리
    • 1 byte = 8 bit
    • boolean은 true, false 두 가지 값만 표현할 수 있으면 되므로 가장 작은 크기인 1byte.
    • char는 자바에서 유니코드(2 byte 문자체계)를 사용하므로 2byte
    • byte는 크기가 1byte라서 byte
    • int(4byte)를 기준으로 짧아서 short(2 byte), 길어서 long(8 byte).
    • float은 실수값을 부동소수점(floating-point)방식으로 저장하기 때문에 float
    • double은 float보다 두 배의 크기(8byte)를 갖기 때문에 double

정수형의 오버플로우

  • 오버플로우(overflow) : 연산과정에서 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것
    • 오버플로우가 발생했다고 하여 에러가 발생하는 것은 아니지만, 예상했던 결과를 얻지 못함. 애초부터 오버플로우가 발생하지 않게 충분한 크기의 타입을 선택해서 사용해야 함.
  • 최대값 + 1 → 최소값
    최소값 - 1 → 최대값

부호있는 정수의 오버플로우

  • 부호없는 정수와 부호있는 정수는 표현범위(최대값과 최소값)가 다르기 때문에 오버플로우가 발생하는 시점이 다름.
  • 부호없는 정수는 2진수로 '0000'이 될 때 오버플로우가 발생하고, 부호있는 정수는 부호비트가 0에서 1이 될 때 오버플로우가 발생함.
    • 부호없는 정수(4bit)의 경우 표현범위가 '0 ~ 15'이므로 이 값이 계속 반복되고, 부호있는 정수(4bit)의 경우 표현범위가 '-8 ~ 7'이므로 이 값이 무한 반복됨.

0개의 댓글