Programing Language/Java

[Java] 기본 자료형(Primitive Data Type)

vinedpillar 2022. 5. 11. 17:33

기본 자료형

  • 변수는 선언될 때 자료형에 따라 저장할 수 있는 값의 종류와 범위가 달라집니다.

  • 자바에서는 정수, 실수, 논리, 문자로 분류되는 총 8개의 기본 자료형을 제공하고 있습니다.
    • 정수 타입: byte, short, int, long
    • 실수 타입: float, double
    • 논리 타입: boolean
    • 문자 타입: char

 

 

 

리터럴

  • 프로그래머가 코드에 수치로 입력하는 것을 리터럴(Literal)이라고 합니다.

  • 일반적으로 수를 입력할 때는 10진수의 정수 리터럴을 사용하지만 상황에 따라 다른 진법의 수도 입력할 수 있습니다.
    • 2진수: 리터럴을 0b / 0B 로 시작하고 0, 1로만 수치를 입력 
    • 8진수: 리터럴을 0으로 시작하고 0~7까지의 숫자로만 수치를 입력
    • 10진수: 별도의 입력 조건 없이 0~9까지의 숫자로 수치를 입력
    • 16진수: 리터를을 0x / 0X로 시작하고 0~9 / a~f[A~F]로 작성

진수 별 입력 예시

// 2진수 리터럴 입력
int x2 = 0b1011;
int y2 = 0B10010;

// 8진수 리터럴 입력
int x8 = 019;
int y8 = 0207;

// 10진수 리터럴 입력
int x10 = 12;
int y10 = 60;

// 16진수 리터럴 입력
int x16 = 0xB3;
int y16 = 0X2C1E;

 

 

 

정수 타입

  • 정수 타입은 4개로 다음 표와 같이 메모리 크기와 저장 허용 값을 갖습니다.
타입 메모리 크기 저장되는 값의 허용 범위
byte 1byte(8bit) -128(-2⁷) ~ 127(2⁷-1)
shrot 2byte(16bit) -32,768(-2¹⁵) ~ 32,767(2¹⁵-1)
int 4byte(32bit) -2,147,483,648(-2³¹) ~ 2,147,483,647(2³¹-1)
long 8byte(64bit) -9,223,372,036,854,775,808(-2⁶³) ~ 9,223,372,036,854,775,807(2⁶³-1)
  • 비트(bit)는 메모리의 가장 작은 단위로 비트 크기에 따라서 자료형의 크기가 결정됩니다.
    (컴퓨터는 2진수로 수를 표현하기 때문에 비트의 묶음 단위로 수의 범위를 지정)
     
  • 자바에서 정수 타입은 가장 앞에 있는 비트를 부호를 표시하는 용도로 사용하고, 나머지 비트는 수의 크기를 표시하는데 사용합니다. 
    (때문에 2의 (bit수 - 1) 제곱만큼 수를 표현 가능)

  • 지정한 자료형에서 벗어나는 범위의 수를 대입하게 되면 컴파일 오류가 발생하게 됩니다.
    • 오버플로우(overflow): 지정한 범위보다 큰 수를 대입했을 때 발생하는 오류
    • 언더플로우(underflow): 작은 수를 대입했을 때 발생하는 오류

  • 자바에서는 기본적으로 숫자를 입력하면 int 형 자료라고 인식하기 때문에 long 타입을 표현하기 위해서는 저장하는 값 뒤에 'l' / 'L'을 붙여 컴파일러에게 알려줘야 합니다.

정수 자료형 표현 방식

// byte형
byte b = 12;

// short형
short s = 212;

// int형
int i = 3123;

// long형
// long형은 리터럴 뒤에 l이나 L을 붙여 long임을 표시
long l = 21125634L;

 

 

 

실수 타입

  • 실수 타입은 2개로 다음 표와 같이 메모리 크기와 저장 허용 값을 갖습니다.
타입 메모리 크기 저장되는 값의 허용 범위 유효 소수점 자리
float 4byte(32bit) (+/-)1.4 x 10⁻⁴⁵ ~ (+/-)3.4 x 10³⁸ 7자리
double 8byte(64bit) (+/-)1.4 x 10⁻³²⁴ ~ (+/-)3.4 x 10³⁰⁸ 15자리
  • 실수 타입은 소수점을 가지는 수를 표현하기 위해 사용하며, 부동 소수점(floating point) 방식을 활용합니다.

  • 프로그래밍에서 부동 소수점 방식은 수를 2진수를 바탕으로 정규화하여 사용하는데, 크게 3부위로 나누어서 표현합니다.
    • 실수의 정규화: N = (-1)ˢ x m x 2ᵉ
    • 부호부(sign): 수의 부호를 표현 / 1bit 사용
    • 지수부(exponent): 소수점 단위를 표현 / float는 8bit, double은 11bit 사용
    • 가수부(mantissa): 실제 수를 표현 / float는 23bit, double은 52bit 사용

  • double이 float보다 표현할 수 있는 소수점 자리 수가 많아 double이 더 정밀한 실수를 표현할 수 있습니다.

  • 자바에서는 실수를 입력하면 기본적으로 double으로 인식하기 때문에 float 타입을 표현하기 위해서는 대입하는 리터럴 뒤에 'f' / 'F'를 붙여 컴파일러에게 알려줘야 합니다.

실수 자료형 표현 방식

// float형
// float형은 리터럴 뒤에 f나 F를 붙여 float 형임을 표시
float f = 1.0321F;

// double형
double d = 2.112124;

 

 

 

논리 타입

  • 논리 타입은 다음 표와 같이 메모리 크기와 저장 허용 값을 갖습니다.
타입 메모리 크기 저장되는 값의 허용 범위
boolean 1byte(8bit) true / false
  • 논리 타입은 참(true)과 거짓(false) 값을 저장하는 자료형으로 프로그램에서 특정 조건에 맞게 제어할 때 주로 사용됩니다.

  • 논리 타입은 직접 값을 입력하여 대입할 수도 있지만, 비교 연산자를 활용해서 값을 대입할 수도 있습니다. 

  • 논리 타입은 1bit만 있어도 표현할 수 있지만 자바의 기본 데이터 크기가 1byte기 때문에 1byte를 사용합니다.

논리 자료형 표현 방식

// boolean형
boolean a = true;
boolean b = false;

 

 

 

문자 타입

  • 문자 타입은 다음 표와 같이 메모리 크기와 저장 허용 값을 갖습니다.
타입 메모리 크기 저장되는 값의 허용 범위
char 2byte(16bit) 0 ~ 65,535(2¹⁶-1)
  • 문자 타입의 리터럴은 작은따옴표('')로 감싸서 표시할 수 있습니다.

  • char 타입은 각국의 문자를 0~65,535의 숫자로 매칭한 유니코드로 변환되어 저장됩니다.
    (유니코드도 숫자로 이루어져있기 때문에 매칭되어 있는 숫자로 변환하여 값을 입력할 수도 있음)

  • char 타입은 1개의 문자만을 저장할 수 있으며, 문자열로 저장하기 위해서는 String 타입을 사용해야 합니다.
    (String은 기본 타입이 아닌 자바에서 제공해주는 참조 타입)

문자 자료형 표현 방식

// char형
// 문자로 바로 입력
// a를 대입
char a = 'a';

// 유니코드 숫자로 치환하여 입력
// 유니코드 b에 해당하는 98을 입력하여 b를 대입
char b = 98;