기본 자료형
- 변수는 선언될 때 자료형에 따라 저장할 수 있는 값의 종류와 범위가 달라집니다.
- 자바에서는 정수, 실수, 논리, 문자로 분류되는 총 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;
'Programing Language > Java' 카테고리의 다른 글
[Java] 기본 자료형 타입 변환(Primitive Data Type Casting) (0) | 2022.05.13 |
---|---|
[Java] 자바의 패키지(Package) (0) | 2022.05.11 |
[Java] 변수와 자료형(Variable & Data Type) (0) | 2022.05.11 |
[Java] 자바 프로그램 메모리 구조(Java Program Memory Structure) (0) | 2022.05.11 |
[Java] 자바 객체지향 개념 기초(Basic Java Object Oriented Programing) (0) | 2022.05.11 |