1953 단어
10 분
자료형에 대한 정리
코딩 언어에는 대부분 자료형이라는 것이 있습니다. 밑에 각각의 대표적인 자료형들을 정의해 나열해 보았습니다.
자세한 개념 설명은 따로 안하겠습니다.
int (정수형):
- 크기: 32비트 (4바이트)
- 값의 범위: -2,147,483,648에서 2,147,483,647까지의 부호 있는 정수
- 특징: 정수형 데이터를 저장하는 데 사용되며, 가장 일반적으로 사용되는 자료형 중 하나입니다. 소수점이 없는 숫자만 다룰 수 있습니다.
double (실수형):
- 크기: 64비트 (8바이트)
- 값의 범위: ±5.0 × 10^−324에서 ±1.7 × 10^308까지 (유효숫자 약 15~16자리)
- 특징: 소수점이 있는 실수 데이터를 저장하는 데 사용됩니다. 정밀도가 높은 소수를 다루는 상황에서 사용되며, 계산의 오차를 줄여줍니다.
float보다 더 큰 범위와 높은 정밀도를 제공합니다.
char (문자형):
- 크기: 16비트 (2바이트)
- 값의 범위: 0에서 65,535까지의 유니코드 문자 (단일 문자)
- 특징: 하나의 문자를 저장하는 데 사용됩니다. C#에서는 문자 자료형이 유니코드 형식으로 저장되므로, 전 세계 대부분의 문자를 표현할 수 있습니다.
bool (논리형):
- 크기: 1비트 (논리적 참/거짓만 저장)
- 값의 범위:
true또는false만을 가질 수 있음 - 특징: 논리적인 참과 거짓을 나타내는 자료형으로, 조건문이나 반복문에서 사용됩니다.
true또는false값만 저장할 수 있으며, 논리 연산의 결과로도 많이 사용됩니다.
string (문자열형):
- 크기: 참조형 (문자열 길이에 따라 크기가 달라짐)
- 값의 범위: 유니코드 문자의 연속적인 문자열
- 특징: 문자들의 시퀀스를 저장하는 데 사용되며, 문자열은 변경할 수 없는 불변 객체입니다. C#에서 문자열을 조작할 때는 여러 가지 유용한 메서드를 제공하며,
+연산자를 사용해 문자열을 쉽게 연결할 수 있습니다.char[]와 달리 문자열은 더 복잡한 문자 데이터 구조입니다.
byte:
- 크기: 8비트 (1바이트)
- 값의 범위: 0에서 255까지의 부호 없는 정수
- 특징: 매우 작은 범위의 양의 정수만 저장할 수 있으며, 메모리 절약에 유리합니다.
sbyte:
- 크기: 8비트 (1바이트)
- 값의 범위: -128에서 127까지의 부호 있는 정수
- 특징: 양수와 음수를 포함할 수 있지만, 범위가 작습니다.
short:
- 크기: 16비트 (2바이트)
- 값의 범위: -32,768에서 32,767까지의 부호 있는 정수
- 특징:
int보다 작은 범위의 정수를 저장할 때 사용합니다.
ushort:
- 크기: 16비트 (2바이트)
- 값의 범위: 0에서 65,535까지의 부호 없는 정수
- 특징: 음수가 필요 없는 작은 정수 값을 다룰 때 유용합니다.
long:
- 크기: 64비트 (8바이트)
- 값의 범위: -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807까지의 부호 있는 정수
- 특징: 매우 큰 범위의 정수를 다룰 수 있습니다.
- ulong:
- 크기: 64비트 (8바이트)
- 값의 범위: 0에서 18,446,744,073,709,551,615까지의 부호 없는 정수
- 특징: 음수가 필요 없는 매우 큰 값을 저장할 때 사용합니다.
- float:
- 크기: 32비트 (4바이트)
- 값의 범위: ±1.5 × 10^−45에서 ±3.4 × 10^38까지 (유효숫자 약 7자리)
- 특징:
double보다 작은 범위의 실수를 표현하며, 메모리 사용량이 적습니다. 소수점이 필요한 숫자를 처리할 때 사용되지만 정밀도가double보다 낮습니다.
- decimal:
- 크기: 128비트 (16바이트)
- 값의 범위: ±1.0 × 10^−28에서 ±7.9228 × 10^28까지 (유효숫자 약 28~29자리)
- 특징: 금융 및 고정 소수점 연산에 적합한 자료형으로, 정밀한 계산이 필요한 경우 사용됩니다.
- object:
- 크기: 참조형
- 값의 범위: 모든 데이터 형식을 참조할 수 있는 최상위 자료형
- 특징: C#의 모든 자료형은
object에서 파생됩니다. 값형 또는 참조형 모두object로 저장할 수 있습니다.
dynamic:
- 크기: 참조형
- 값의 범위: 런타임에 할당된 값에 따라 달라짐
- 특징: 컴파일 시점이 아닌 런타임에 타입을 확인하므로, 타입이 동적으로 변경될 수 있는 상황에서 사용됩니다.
DateTime:
- 크기: 참조형
- 값의 범위: 0001년 1월 1일부터 9999년 12월 31일까지의 날짜 및 시간
- 특징: 날짜와 시간을 처리하는 데 사용되며, 다양한 날짜 및 시간 조작 기능을 제공합니다.
아래는 나열한 자료형에 대해 각 언어에서 해당 자료형이 어떻게 지원되는지 정리한 것입니다. 일부 언어에서는 동일한 기능을 다른 이름으로 구현하거나 다른 방식으로 자료형을 처리하기도 합니다.
int (정수형):
- Python:
int - JavaScript:
Number(모든 숫자형이 부동 소수점으로 처리됨) - Java:
int - Rust:
i32 - C:
int - C#:
int - C++:
int - Kotlin:
Int - Go:
int
- Python:
double (실수형):
- Python:
float(Python에서는float가 C의double과 동일) - JavaScript:
Number(부동 소수점 숫자로 처리됨) - Java:
double - Rust:
f64 - C:
double - C#:
double - C++:
double - Kotlin:
Double - Go:
float64
- Python:
char (문자형):
- Python:
str(Python에서는 문자열에서 한 글자를 추출하면 문자로 사용 가능) - JavaScript:
String(문자열 내의 문자) - Java:
char - Rust:
char - C:
char - C#:
char - C++:
char - Kotlin:
Char - Go:
rune(유니코드 문자)
- Python:
bool (논리형):
- Python:
bool - JavaScript:
Boolean - Java:
boolean - Rust:
bool - C:
_Bool(또는stdbool.h포함하여bool사용) - C#:
bool - C++:
bool - Kotlin:
Boolean - Go:
bool
- Python:
string (문자열형):
- Python:
str - JavaScript:
String - Java:
String - Rust:
String또는&str - C:
char*(문자 배열) - C#:
string - C++:
std::string - Kotlin:
String - Go:
string
- Python:
byte:
- Python:
bytes - JavaScript:
Uint8Array - Java:
byte - Rust:
u8 - C:
unsigned char - C#:
byte - C++:
unsigned char - Kotlin:
Byte - Go:
byte
- Python:
sbyte:
- Python: 지원되지 않음 (대신
int로 처리) - JavaScript: 지원되지 않음 (대신
Number로 처리) - Java:
byte - Rust:
i8 - C:
signed char - C#:
sbyte - C++:
signed char - Kotlin:
Byte - Go: 지원되지 않음
- Python: 지원되지 않음 (대신
short:
- Python: 지원되지 않음 (대신
int로 처리) - JavaScript: 지원되지 않음 (대신
Number로 처리) - Java:
short - Rust:
i16 - C:
short - C#:
short - C++:
short - Kotlin:
Short - Go: 지원되지 않음 (대신
int로 처리)
- Python: 지원되지 않음 (대신
ushort:
- Python: 지원되지 않음 (대신
int로 처리) - JavaScript: 지원되지 않음 (대신
Number로 처리) - Java: 지원되지 않음
- Rust:
u16 - C:
unsigned short - C#:
ushort - C++:
unsigned short - Kotlin: 지원되지 않음
- Go: 지원되지 않음
- Python: 지원되지 않음 (대신
long:
- Python:
int(Python 3.x에서는int가 무제한 정수) - JavaScript: 지원되지 않음 (대신
BigInt로 처리) - Java:
long - Rust:
i64 - C:
long - C#:
long - C++:
long - Kotlin:
Long - Go:
int64
- ulong:
- Python: 지원되지 않음 (대신
int로 처리) - JavaScript: 지원되지 않음
- Java: 지원되지 않음
- Rust:
u64 - C:
unsigned long - C#:
ulong - C++:
unsigned long - Kotlin: 지원되지 않음
- Go:
uint64
- float:
- Python:
float - JavaScript:
Number - Java:
float - Rust:
f32 - C:
float - C#:
float - C++:
float - Kotlin:
Float - Go:
float32
- decimal:
- Python:
decimal.Decimal(모듈을 통해 제공) - JavaScript: 지원되지 않음
- Java:
BigDecimal - Rust: 지원되지 않음 (외부 crate 사용 가능)
- C: 지원되지 않음
- C#:
decimal - C++: 지원되지 않음 (외부 라이브러리 사용 가능)
- Kotlin:
BigDecimal - Go: 지원되지 않음 (외부 라이브러리 사용 가능)
- object:
- Python:
object - JavaScript:
Object - Java:
Object - Rust:
dyn Any(특정 기능에 따라) - C: 지원되지 않음
- C#:
object - C++: 지원되지 않음 (다형성을 통해 비슷한 기능 구현 가능)
- Kotlin:
Any - Go:
interface{}
- dynamic:
- Python: 지원됨 (동적 타이핑)
- JavaScript: 지원됨 (동적 타이핑)
- Java: 지원되지 않음
- Rust: 지원되지 않음
- C: 지원되지 않음
- C#:
dynamic - C++: 지원되지 않음
- Kotlin: 지원되지 않음
- Go: 지원되지 않음
- DateTime:
- Python:
datetime.datetime - JavaScript:
Date - Java:
LocalDateTime - Rust:
chrono::DateTime(외부 crate) - C:
struct tm(time.h) - C#:
DateTime - C++:
std::chrono::system_clock::time_point - Kotlin:
LocalDateTime - Go:
time.Time
