Java 기본 데이터 타입: 명확한 가이드
변수는 값을 저장하기 위한 예약된 메모리 위치에 불과합니다. 즉, 변수를 생성하면 메모리에 공간을 예약하는 것입니다.
변수의 데이터 타입에 따라 운영체제는 메모리를 할당하고 예약된 메모리에 무엇을 저장할지 결정합니다. 따라서 변수에 서로 다른 데이터 타입을 할당하여 정수, 소수, 문자 등을 저장할 수 있습니다.
Java에는 두 가지 데이터 타입이 있습니다:
기본 데이터 타입
Java에서 지원하는 8가지 기본 데이터 타입이 있습니다. 기본 데이터 타입은 언어에 의해 미리 정의되어 있으며 키워드로 명명됩니다. 이제 8가지 기본 데이터 타입을 자세히 살펴보겠습니다.
byte
byte 데이터 타입은 8비트 부호 있는 2의 보수 정수입니다.
최소값은 -128 (-2⁷)
최대값은 127 (포함)(2⁷ -1)
기본값은 0
byte 데이터 타입은 주로 정수 대신 큰 배열에서 공간을 절약하기 위해 사용되며, byte는 정수의 4분의 1 크기입니다.
예: byte a = 100, byte b = -50
short
short 데이터 타입은 16비트 부호 있는 2의 보수 정수입니다.
최소값은 -32,768 (-2¹⁵)
최대값은 32,767 (포함) (2¹⁵ -1)
short 데이터 타입도 byte처럼 메모리 절약에 사용될 수 있습니다. short는 정수의 2배 작습니다.
기본값은 0.
예: short s = 10000, short r = -20000
int
int 데이터 타입은 32비트 부호 있는 2의 보수 정수입니다.
최소값은 -2,147,483,648 (-2³¹)
최대값은 2,147,483,647 (포함) (2³¹ -1)
메모리 문제가 없다면 정수 값의 기본 데이터 타입으로 일반적으로 int를 사용합니다.
기본값은 0
예: int a = 100000, int b = -200000
long
- long 데이터 타입은 64비트 부호 있는 2의 보수 정수
- 최소값은 -9,223,372,036,854,775,808(-2⁶³)
- 최대값은 9,223,372,036,854,775,807 (포함)(2⁶³ -1)
- int보다 더 넓은 범위가 필요할 때 사용
- 기본값은 0L
- 예: long a = 100000L, long b = -200000L
float
float 데이터 타입은 단정밀도 32비트 IEEE 754 부동소수점입니다.
float는 주로 부동소수점 숫자의 큰 배열에서 메모리를 절약하기 위해 사용됩니다.
기본값은 0.0f
float 데이터 타입은 통화 같은 정밀한 값에는 절대 사용하지 않습니다.
예: float f1 = 234.5f
double
double 데이터 타입은 배정밀도 64비트 IEEE 754 부동소수점입니다.
이 데이터 타입은 일반적으로 소수 값의 기본 데이터 타입으로, 보통 기본 선택입니다.
double 데이터 타입은 통화 같은 정밀한 값에는 절대 사용하지 않아야 합니다.
기본값은 0.0d
예: double d1 = 123.4
boolean
- boolean 데이터 타입은 1비트 정보를 나타냅니다
- 가능한 값은 true와 false 두 가지뿐입니다
- 이 데이터 타입은 true/false 조건을 추적하는 간단한 플래그에 사용됩니다
- 기본값은 false
- 예: boolean one = true
char
- char 데이터 타입은 단일 16비트 유니코드 문자입니다
- 최소값은 '\u0000' (또는 0)
- 최대값은 '\uffff' (또는 65,535 포함)
- char 데이터 타입은 모든 문자를 저장하는 데 사용됩니다
- 예: char letterA = 'A'
참조 데이터 타입
참조 변수는 클래스의 정의된 생성자를 사용하여 생성됩니다. 객체에 접근하는 데 사용됩니다. 이 변수들은 변경될 수 없는 특정 타입으로 선언됩니다. 예: Employee, Puppy 등.
클래스 객체와 다양한 타입의 배열 변수들이 참조 데이터 타입에 속합니다.
모든 참조 변수의 기본값은 null입니다.
참조 변수는 선언된 타입의 객체나 호환 가능한 타입의 객체를 참조하는 데 사용될 수 있습니다.
예: Animal animal = new Animal("giraffe");
Java 리터럴
리터럴은 고정된 값의 소스 코드 표현입니다. 계산 없이 코드에 직접 표현됩니다.
리터럴은 모든 기본 타입 변수에 할당할 수 있습니다. 예:
byte a = 68; char a = 'A';
byte, int, long, short는 10진수(base 10), 16진수(base 16), 8진수(base 8) 숫자 체계로도 표현할 수 있습니다.
이 숫자 체계로 리터럴을 사용할 때 8진수는 접두사 0, 16진수는 접두사 0x를 사용합니다. 예:
int decimal = 100; int octal = 0144; int hexa = 0x64;
Java에서 문자열 리터럴은 대부분의 다른 언어처럼 문자 시퀀스를 큰따옴표 쌍으로 감싸서 지정합니다. 문자열 리터럴 예:
예제
"Hello World"
"two\nlines"
"\"This is in quotes\""
문자열과 char 타입 리터럴은 모든 유니코드 문자를 포함할 수 있습니다. 예:
char a = '\u0001'; String a = "\u0001";
Java 언어는 문자열과 char 리터럴에 대한 몇 가지 특수 이스케이프 시퀀스도 지원합니다:
| 표기법 | 표현 문자 |
| \n | 개행 (0x0a) |
| \r | 캐리지 리턴 (0x0d) |
| \f | 폼피드 (0x0c) |
| \b | 백스페이스 (0x08) |
| \s | 공백 (0x20) |
| \t | 탭 |
| \" | 큰따옴표 |
| \' | 작은따옴표 |
| \\ | 백슬래시 |
| \ddd | 8진수 문자 (ddd) |
| \uxxxx | 16진수 유니코드 문자 (xxxx) |
다음 단계
이 장에서는 다양한 데이터 타입을 설명했습니다. 다음 주제는 다양한 변수 타입과 그 사용법을 설명합니다. 이를 통해 Java 클래스, 인터페이스 등에서 어떻게 사용될 수 있는지 잘 이해하게 될 것입니다.