본문 바로가기

공부/IT

컴퓨터 언어 데이터 타입의 특징과 종류들

반응형

컴퓨터 프로그래밍에서 데이터 타입(Data Type)은 변수가 가질 수 있는 값의 종류를 정의하는 것

각 언어마다 데이터 타입의 구체적인 구현이나 특징이 다를 수 있지만,

대부분의 언어에서 사용하는 주요 데이터 타입에 대해 알아볼까요

기본 데이터 타입 (Primitive Types)

1. 정수형 (Integer)

• 설명: 소수점이 없는 정수를 나타냅니다.

• 예시: 0, -10, 42

• 특징:

• 저장 공간의 크기에 따라 8비트, 16비트, 32비트, 64비트 등으로 나뉘며, 각기 다룰 수 있는 정수의 범위가 달라집니다.

• 언어에 따라 부호 있는 정수 (signed integer)와 부호 없는 정수 (unsigned integer)로 나뉘기도 합니다.

2. 부동소수점형 (Floating Point)

• 설명: 소수점이 있는 실수형 데이터를 표현합니다.

• 예시: 3.14, -0.001, 2.71828

• 특징:

• 보통 float와 double로 나뉩니다. float는 단정밀도(32비트), double은 배정밀도(64비트)를 의미합니다.

• 컴퓨터 내부에서 실수를 표현할 때 근사값으로 표현되므로 정확한 실수 연산에 주의가 필요합니다.

3. 문자형 (Character)

• 설명: 단일 문자를 표현하는 데이터 타입입니다.

• 예시: 'A', 'b', '7'

• 특징:

• 문자 하나만을 저장하며, 보통 ASCII 또는 유니코드로 표현됩니다.

• 문자형은 1바이트 크기의 메모리를 사용하는 경우가 많습니다 (단, 유니코드의 경우 더 큰 크기의 메모리를 사용).

4. 불리언형 (Boolean)

• 설명: 참과 거짓을 나타내는 데이터 타입입니다.

• 예시: true, false

• 특징:

• 논리 연산에서 주로 사용되며, 조건문에서의 판단 기준으로 쓰입니다.

• 1비트 또는 1바이트로 저장됩니다 (언어마다 다름).

참조 데이터 타입 (Reference Types)

1. 문자열 (String)

• 설명: 문자열은 문자의 배열입니다. 단일 문자가 아닌 연속된 문자를 표현할 때 사용됩니다.

• 예시: "Hello, World!", "12345"

• 특징:

• 문자열은 문자형 배열로 구현되며, 보통 언어에서 문자열을 다루는 다양한 메서드나 함수를 제공합니다.

• 문자열은 가변(언어에 따라 수정 가능) 또는 불변(한 번 생성하면 변경 불가)일 수 있습니다.

2. 배열 (Array)

• 설명: 동일한 타입의 데이터들을 모은 자료 구조입니다.

• 예시: [1, 2, 3], ['a', 'b', 'c'] • 특징:

• 고정된 크기(일부 언어에서는 가변)이며, 인덱스를 통해 요소에 접근할 수 있습니다.

• 배열의 요소는 연속된 메모리 공간에 저장됩니다.

3. 리스트 (List)

• 설명: 배열과 유사하지만 크기가 동적으로 변하는 자료 구조입니다.

• 예시: [10, 20, 30], ['apple', 'banana'] • 특징:

• 파이썬의 list, 자바의 ArrayList처럼 크기가 동적으로 조절되는 배열의 한 형태입니다.

• 배열보다 삽입, 삭제가 간편하지만, 성능 면에서 차이가 있을 수 있습니다.

4. 객체 (Object)

• 설명: 객체는 상태(속성)와 행동(메서드)을 갖는 데이터 구조로, 클래스에서 정의된 형태의 인스턴스입니다.

• 예시: Person, Car 클래스의 인스턴스

• 특징:

• 객체지향 프로그래밍에서 사용되는 기본 단위로, 클래스에 의해 정의된 속성과 메서드를 가집니다.

• 다형성, 상속 등의 객체지향 개념을 통해 다양한 방식으로 사용됩니다.

추상화된 데이터 타입 (Abstract Data Types)

1. 스택 (Stack)

• 설명: 후입선출(LIFO, Last In First Out) 방식의 자료 구조입니다.

• 특징:

• 데이터는 스택의 한쪽 끝에서만 삽입되고 삭제됩니다.

• 보통 push, pop, peek 등의 연산이 지원됩니다.

2. 큐 (Queue)

• 설명: 선입선출(FIFO, First In First Out) 방식의 자료 구조입니다.

• 특징:

• 한쪽 끝에서 삽입되고, 반대쪽 끝에서 삭제되는 방식으로 동작합니다.

• enqueue, dequeue 등의 연산이 지원됩니다.

3. 리스트 (Linked List)

• 설명: 각 요소가 데이터와 다음 요소를 가리키는 포인터로 구성된 자료 구조입니다.

• 특징:

• 배열과 다르게 메모리가 연속적으로 할당되지 않으며, 동적으로 요소의 추가 및 삭제가 용이합니다.

• 단일 연결 리스트, 이중 연결 리스트 등으로 나뉩니다.

4. 트리 (Tree)

• 설명: 계층적인 구조를 표현하는 자료 구조입니다.

• 특징:

• 루트 노드와 자식 노드로 구성되며, 각 노드는 여러 자식 노드를 가질 수 있습니다.

• 이진 트리, AVL 트리, B-트리 등 다양한 트리 구조가 있습니다.

5. 그래프 (Graph)

• 설명: 노드(정점)와 노드 간의 연결(간선)을 나타내는 자료 구조입니다.

• 특징:

• 방향 그래프, 무방향 그래프, 가중치 그래프 등 다양한 종류가 있습니다.

• 네트워크 구조, 경로 탐색 알고리즘 등에서 활용됩니다.

언어별 데이터 타입의 특징

• C/C++: 강력한 타입 검사와 메모리 제어 기능을 제공하며, 기본적으로 정적 타입 언어입니다.

• Python: 동적 타입 언어로, 변수에 값을 할당할 때 자동으로 타입이 지정됩니다. 강력한 내장 데이터 타입을 지원합니다.

• Java: 정적 타입 언어로, 변수의 타입을 명시적으로 지정해야 합니다. 객체지향 언어이므로 모든 것이 객체로 간주됩니다.

데이터 타입은 프로그램의 성능과 효율성에 큰 영향을 미치기 때문에, 상황에 맞게 적절한 데이터 타입을 선택하는 것이 중요합니다.

반응형