자바의 데이터 타입
기본 데이터 타입(Primitive Data Types)
자바는 기본 데이터 타입을 8가지 제공하며, 이들은 메모리에서 직접 값을 저장합니다. 기본 데이터 타입은 다음과 같습니다:
byte: 8비트 정수형으로, -128부터 127까지의 값을 가질 수 있습니다. 메모리 사용이 적어 대량의 데이터를 처리할 때 유용합니다.
short: 16비트 정수형으로, -32,768부터 32,767까지의 값을 가질 수 있습니다. byte보다 더 큰 범위의 정수를 필요로 할 때 사용됩니다.
int: 32비트 정수형으로, -2,147,483,648부터 2,147,483,647까지의 값을 가질 수 있습니다. 일반적으로 정수형 데이터에 가장 많이 사용됩니다.
long: 64비트 정수형으로, 매우 큰 정수를 저장할 수 있습니다. -9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지의 값을 가질 수 있습니다.
float: 32비트 부동 소수점 숫자로, 소수점을 포함한 숫자를 저장할 수 있습니다. 정밀도가 낮지만 메모리 사용이 적어 대량의 실수 데이터를 처리할 때 유용합니다.
double: 64비트 부동 소수점 숫자로, float보다 더 높은 정밀도를 제공합니다. 일반적으로 실수형 데이터에 사용됩니다.
char: 16비트 유니코드 문자형으로, 하나의 문자를 저장할 수 있습니다. 예를 들어, 'A', '1', '$' 등의 문자를 저장할 수 있습니다.
boolean: true 또는 false의 두 가지 값만 가질 수 있는 데이터 타입으로, 조건문이나 플래그를 표현하는 데 사용됩니다.
참조 데이터 타입(Reference Data Types)
자바의 참조 데이터 타입은 객체를 참조하는 데 사용됩니다. 기본 데이터 타입과 달리, 참조 데이터 타입은 메모리의 주소를 저장합니다. 주요 참조 데이터 타입은 다음과 같습니다:
클래스: 사용자 정의 데이터 타입으로, 객체를 생성할 수 있는 설계도입니다. 클래스는 속성과 메서드를 포함할 수 있으며, 객체는 클래스의 인스턴스입니다.
인터페이스: 클래스가 구현해야 하는 메서드의 집합을 정의하는 데이터 타입입니다. 인터페이스는 다중 상속을 지원하며, 여러 클래스에서 공통된 기능을 정의할 때 유용합니다.
배열: 동일한 데이터 타입의 여러 값을 저장할 수 있는 데이터 구조입니다. 배열은 고정된 크기를 가지며, 인덱스를 통해 각 요소에 접근할 수 있습니다. 예를 들어, int[]는 정수형 배열을 나타냅니다.
열거형(Enum): 상수 집합을 정의하는 데이터 타입으로, 특정 값의 집합을 나타낼 때 사용됩니다. 예를 들어, 요일을 나타내는 Enum을 정의할 수 있습니다.
데이터 타입의 변환(Casting)
자바에서는 데이터 타입 간의 변환이 가능합니다. 변환은 크게 두 가지로 나눌 수 있습니다: 자동 변환(Upcasting)과 수동 변환(Downcasting)입니다.
자동 변환: 작은 데이터 타입에서 큰 데이터 타입으로의 변환이 자동으로 이루어집니다. 예를 들어, int에서 long으로 변환할 때는 데이터 손실이 없으므로 자동으로 변환됩니다.
수동 변환: 큰 데이터 타입에서 작은 데이터 타입으로의 변환은 명시적으로 수행해야 합니다. 이 경우 데이터 손실이 발생할 수 있습니다. 예를 들어, long에서 int로 변환할 때는 (int) 형변환을 사용해야 하며, 이 과정에서 값이 잘릴 수 있습니다.
데이터 타입의 기본값
자바에서 변수를 선언할 때 초기값을 지정하지 않으면, 각 데이터 타입에 따라 기본값이 자동으로 할당됩니다. 기본값은 다음과 같습니다:
정수형(byte, short, int, long): 0
부동 소수점형(float, double): 0.0
문자형(char): '\u0000' (널 문자)
불리언형(boolean): false
참조형: null
이러한 기본값은 변수를 초기화하지 않고 사용할 경우 발생할 수 있는 오류를 방지하는 데 도움을 줍니다.
데이터 타입의 선택과 사용
자바에서 데이터 타입을 선택할 때는 여러 가지 요소를 고려해야 합니다.
메모리 사용: 데이터의 크기와 범위를 고려하여 적절한 데이터 타입을 선택해야 합니다. 예를 들어, 작은 범위의 정수를 저장할 경우 byte나 short를 사용하여 메모리를 절약할 수 있습니다.
정밀도: 실수형 데이터를 다룰 때는 float와 double 중에서 필요한 정밀도에 따라 선택해야 합니다. 일반적으로 double이 더 높은 정밀도를 제공하므로, 정밀한 계산이 필요한 경우 double을 사용하는 것이 좋습니다.
성능: 데이터 타입에 따라 성능 차이가 있을 수 있습니다. 예를 들어, 기본 데이터 타입은 참조 데이터 타입보다 성능이 더 좋습니다. 따라서 성능이 중요한 경우 기본 데이터 타입을 사용하는 것이 바람직합니다.
가독성: 코드의 가독성을 높이기 위해 적절한 데이터 타입을 선택하는 것도 중요합니다. 예를 들어, 특정 값의 집합을 나타내는 경우 Enum을 사용하면 코드의 의미가 명확해집니다.