1953 단어
10 분
자료형에 대한 정리

코딩 언어에는 대부분 자료형이라는 것이 있습니다. 밑에 각각의 대표적인 자료형들을 정의해 나열해 보았습니다.
자세한 개념 설명은 따로 안하겠습니다.

  1. int (정수형):

    • 크기: 32비트 (4바이트)
    • 값의 범위: -2,147,483,648에서 2,147,483,647까지의 부호 있는 정수
    • 특징: 정수형 데이터를 저장하는 데 사용되며, 가장 일반적으로 사용되는 자료형 중 하나입니다. 소수점이 없는 숫자만 다룰 수 있습니다.
  2. double (실수형):

    • 크기: 64비트 (8바이트)
    • 값의 범위: ±5.0 × 10^−324에서 ±1.7 × 10^308까지 (유효숫자 약 15~16자리)
    • 특징: 소수점이 있는 실수 데이터를 저장하는 데 사용됩니다. 정밀도가 높은 소수를 다루는 상황에서 사용되며, 계산의 오차를 줄여줍니다. float보다 더 큰 범위와 높은 정밀도를 제공합니다.
  3. char (문자형):

    • 크기: 16비트 (2바이트)
    • 값의 범위: 0에서 65,535까지의 유니코드 문자 (단일 문자)
    • 특징: 하나의 문자를 저장하는 데 사용됩니다. C#에서는 문자 자료형이 유니코드 형식으로 저장되므로, 전 세계 대부분의 문자를 표현할 수 있습니다.
  4. bool (논리형):

    • 크기: 1비트 (논리적 참/거짓만 저장)
    • 값의 범위: true 또는 false만을 가질 수 있음
    • 특징: 논리적인 참과 거짓을 나타내는 자료형으로, 조건문이나 반복문에서 사용됩니다. true 또는 false 값만 저장할 수 있으며, 논리 연산의 결과로도 많이 사용됩니다.
  5. string (문자열형):

    • 크기: 참조형 (문자열 길이에 따라 크기가 달라짐)
    • 값의 범위: 유니코드 문자의 연속적인 문자열
    • 특징: 문자들의 시퀀스를 저장하는 데 사용되며, 문자열은 변경할 수 없는 불변 객체입니다. C#에서 문자열을 조작할 때는 여러 가지 유용한 메서드를 제공하며, + 연산자를 사용해 문자열을 쉽게 연결할 수 있습니다. char[]와 달리 문자열은 더 복잡한 문자 데이터 구조입니다.
  6. byte:

    • 크기: 8비트 (1바이트)
    • 값의 범위: 0에서 255까지의 부호 없는 정수
    • 특징: 매우 작은 범위의 양의 정수만 저장할 수 있으며, 메모리 절약에 유리합니다.
  7. sbyte:

    • 크기: 8비트 (1바이트)
    • 값의 범위: -128에서 127까지의 부호 있는 정수
    • 특징: 양수와 음수를 포함할 수 있지만, 범위가 작습니다.
  8. short:

    • 크기: 16비트 (2바이트)
    • 값의 범위: -32,768에서 32,767까지의 부호 있는 정수
    • 특징: int보다 작은 범위의 정수를 저장할 때 사용합니다.
  9. ushort:

    • 크기: 16비트 (2바이트)
    • 값의 범위: 0에서 65,535까지의 부호 없는 정수
    • 특징: 음수가 필요 없는 작은 정수 값을 다룰 때 유용합니다.
  10. long:

  • 크기: 64비트 (8바이트)
  • 값의 범위: -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807까지의 부호 있는 정수
  • 특징: 매우 큰 범위의 정수를 다룰 수 있습니다.
  1. ulong:
  • 크기: 64비트 (8바이트)
  • 값의 범위: 0에서 18,446,744,073,709,551,615까지의 부호 없는 정수
  • 특징: 음수가 필요 없는 매우 큰 값을 저장할 때 사용합니다.
  1. float:
  • 크기: 32비트 (4바이트)
  • 값의 범위: ±1.5 × 10^−45에서 ±3.4 × 10^38까지 (유효숫자 약 7자리)
  • 특징: double보다 작은 범위의 실수를 표현하며, 메모리 사용량이 적습니다. 소수점이 필요한 숫자를 처리할 때 사용되지만 정밀도가 double보다 낮습니다.
  1. decimal:
  • 크기: 128비트 (16바이트)
  • 값의 범위: ±1.0 × 10^−28에서 ±7.9228 × 10^28까지 (유효숫자 약 28~29자리)
  • 특징: 금융 및 고정 소수점 연산에 적합한 자료형으로, 정밀한 계산이 필요한 경우 사용됩니다.
  1. object:
  • 크기: 참조형
  • 값의 범위: 모든 데이터 형식을 참조할 수 있는 최상위 자료형
  • 특징: C#의 모든 자료형은 object에서 파생됩니다. 값형 또는 참조형 모두 object로 저장할 수 있습니다.
  1. dynamic:

    • 크기: 참조형
    • 값의 범위: 런타임에 할당된 값에 따라 달라짐
    • 특징: 컴파일 시점이 아닌 런타임에 타입을 확인하므로, 타입이 동적으로 변경될 수 있는 상황에서 사용됩니다.
  2. DateTime:

    • 크기: 참조형
    • 값의 범위: 0001년 1월 1일부터 9999년 12월 31일까지의 날짜 및 시간
    • 특징: 날짜와 시간을 처리하는 데 사용되며, 다양한 날짜 및 시간 조작 기능을 제공합니다.

아래는 나열한 자료형에 대해 각 언어에서 해당 자료형이 어떻게 지원되는지 정리한 것입니다. 일부 언어에서는 동일한 기능을 다른 이름으로 구현하거나 다른 방식으로 자료형을 처리하기도 합니다.

  1. int (정수형):

    • Python: int
    • JavaScript: Number (모든 숫자형이 부동 소수점으로 처리됨)
    • Java: int
    • Rust: i32
    • C: int
    • C#: int
    • C++: int
    • Kotlin: Int
    • Go: int
  2. double (실수형):

    • Python: float (Python에서는 float가 C의 double과 동일)
    • JavaScript: Number (부동 소수점 숫자로 처리됨)
    • Java: double
    • Rust: f64
    • C: double
    • C#: double
    • C++: double
    • Kotlin: Double
    • Go: float64
  3. char (문자형):

    • Python: str (Python에서는 문자열에서 한 글자를 추출하면 문자로 사용 가능)
    • JavaScript: String (문자열 내의 문자)
    • Java: char
    • Rust: char
    • C: char
    • C#: char
    • C++: char
    • Kotlin: Char
    • Go: rune (유니코드 문자)
  4. bool (논리형):

    • Python: bool
    • JavaScript: Boolean
    • Java: boolean
    • Rust: bool
    • C: _Bool (또는 stdbool.h 포함하여 bool 사용)
    • C#: bool
    • C++: bool
    • Kotlin: Boolean
    • Go: bool
  5. string (문자열형):

    • Python: str
    • JavaScript: String
    • Java: String
    • Rust: String 또는 &str
    • C: char* (문자 배열)
    • C#: string
    • C++: std::string
    • Kotlin: String
    • Go: string
  6. byte:

    • Python: bytes
    • JavaScript: Uint8Array
    • Java: byte
    • Rust: u8
    • C: unsigned char
    • C#: byte
    • C++: unsigned char
    • Kotlin: Byte
    • Go: byte
  7. sbyte:

    • Python: 지원되지 않음 (대신 int로 처리)
    • JavaScript: 지원되지 않음 (대신 Number로 처리)
    • Java: byte
    • Rust: i8
    • C: signed char
    • C#: sbyte
    • C++: signed char
    • Kotlin: Byte
    • Go: 지원되지 않음
  8. short:

    • Python: 지원되지 않음 (대신 int로 처리)
    • JavaScript: 지원되지 않음 (대신 Number로 처리)
    • Java: short
    • Rust: i16
    • C: short
    • C#: short
    • C++: short
    • Kotlin: Short
    • Go: 지원되지 않음 (대신 int로 처리)
  9. ushort:

    • Python: 지원되지 않음 (대신 int로 처리)
    • JavaScript: 지원되지 않음 (대신 Number로 처리)
    • Java: 지원되지 않음
    • Rust: u16
    • C: unsigned short
    • C#: ushort
    • C++: unsigned short
    • Kotlin: 지원되지 않음
    • Go: 지원되지 않음
  10. long:

  • Python: int (Python 3.x에서는 int가 무제한 정수)
  • JavaScript: 지원되지 않음 (대신 BigInt로 처리)
  • Java: long
  • Rust: i64
  • C: long
  • C#: long
  • C++: long
  • Kotlin: Long
  • Go: int64
  1. ulong:
  • Python: 지원되지 않음 (대신 int로 처리)
  • JavaScript: 지원되지 않음
  • Java: 지원되지 않음
  • Rust: u64
  • C: unsigned long
  • C#: ulong
  • C++: unsigned long
  • Kotlin: 지원되지 않음
  • Go: uint64
  1. float:
  • Python: float
  • JavaScript: Number
  • Java: float
  • Rust: f32
  • C: float
  • C#: float
  • C++: float
  • Kotlin: Float
  • Go: float32
  1. decimal:
  • Python: decimal.Decimal (모듈을 통해 제공)
  • JavaScript: 지원되지 않음
  • Java: BigDecimal
  • Rust: 지원되지 않음 (외부 crate 사용 가능)
  • C: 지원되지 않음
  • C#: decimal
  • C++: 지원되지 않음 (외부 라이브러리 사용 가능)
  • Kotlin: BigDecimal
  • Go: 지원되지 않음 (외부 라이브러리 사용 가능)
  1. object:
  • Python: object
  • JavaScript: Object
  • Java: Object
  • Rust: dyn Any (특정 기능에 따라)
  • C: 지원되지 않음
  • C#: object
  • C++: 지원되지 않음 (다형성을 통해 비슷한 기능 구현 가능)
  • Kotlin: Any
  • Go: interface{}
  1. dynamic:
  • Python: 지원됨 (동적 타이핑)
  • JavaScript: 지원됨 (동적 타이핑)
  • Java: 지원되지 않음
  • Rust: 지원되지 않음
  • C: 지원되지 않음
  • C#: dynamic
  • C++: 지원되지 않음
  • Kotlin: 지원되지 않음
  • Go: 지원되지 않음
  1. 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