컴파일러에게 특정 데이터의 형태를 알려주기 위해 사용하는 일종의 표현 방법입니다.
Swift에는 다양한 형태의 데이터 타입이 존재하며, 사용자가 데이터 타입을 직접 만들 수도 있습니다.
Swift에는 정말 다양한 데이터 타입이 존재합니다. 그중에서 가장 많이 사용되며, 가장 기본적인 데이터 타입은 아래와 같습니다.
✅ Int: 정수형 데이터 타입
- 자료형의 크기: 8바이트
- 정수(소수점이 없는 수)를 저장하는 데 사용
- 양수, 음수, 0 값을 저장할 수 있습니다.
var age: Int = 20
✅ Double과 Float: 부동 소수점 데이터 타입
- Double 자료형의 크기: 8바이트
- Float 자료형의 크기: 4바이트
- 소수점이 있는 숫자를 저장하는 데 사용
- Double은 64비트로 부동 소수점 수를 저장, 소수점 15자리까지 정확
- Float은 32비트로 부동 소수점 수를 저장, 소수점 6자리까지 정확
- 데이터 타입을 선언하지 않으면(타입 추론) Double형이 기본타입으로 정의됩니다.
var x: Double = 1.1234567891234567 var y: Float = 1.1234567891234567 print(x) print(y) /* 출력 결과 1.1234567891234566 15자리까지 정확 1.1234568 6자리까지 정확 */
✅ Character: 문자 데이터 타입
- 자료형의 크기: 16바이트
- 문자, 숫자, 문장 부호, 심볼 같은 유니코드 문자 하나를 저장
- Swift에서 Character형의 초깃값을 선언할 때는 큰따옴표만 사용합니다.(작은따옴표 사용X)
- Character형은 데이터 타입을 생략할 수 없습니다. (Character 생략 시 String형으로 인식)
var x: Character = 'a' //작은 따옴표 사용X var x: Character = "a" //큰 따옴표 사용O var y: "b" //y의 데이터 타입은 String이다. (데이터 타입을 생략할 경우 String형이 기본적으로 적용된다.)
✅ String: 문자열 데이터 타입
- 자료형의 크기: 16바이트
- 문자의 집합을 저장할 때 사용합니다.
var name: String = "홍길동" var address = "서울특별시 OO구"
✅ Bool: 부울 테이터 타입
- 자료형의 크기: 1바이트
- 참 또는 거짓(1 or 0) 조건을 처리하는 데이터 타입
- Boolean 데이터 타입을 처리하기 위하여 두 개의 불리언 상수값(true/false)을 사용
var x: Bool = true var y: Bool = false
✅ Any
- 자료형의 크기: 32바이트
- Swift에서 모든 데이터 타입을 사용할 수 있는 최상위 개념의 데이터 타입입니다.
var a: Any = 1 //a의 데이터 타입: Int 하지만 메모리 사용량은 32바이트 var b: Any = 1.2 //b의 데이터 타입: Double 하지만 메모리 사용량은 32바이트 var c: Any = "hello" //c의 데이터 타입: String 하지만 메모리 사용량은 32바이트 var d: Any = true //d의 데이터 타입: Bool 하지만 메모리 사용량은 32바이트
✅ 타입 어노테이션(type annotation)
사용자가 데이터 타입을 직접 작성/선택하여 변수 또는 상수를 선언하는 방식입니다.
var age: Int = 20 var name: String = "홍길동"
✅ 타입 추론(type inference)
변수 또는 상수의 데이터 타입을 컴파일러가 추론하여 자동으로 정의해주는 방식입니다.
var age = 20 //컴파일러가 자동으로 age의 데이터 타입을 Int형으로 결정 var name = "홍길동" //컴파일러가 자동으로 name의 데이터 타입을 String형으로 결정
컴파일러가 자동으로 데이터의 타입을 결정해주는 타입 추론(type inference)은 사용하기 간편하고, 코드를 간단하게 작성할 수 있다는 장점을 가지고 있습니다. 하지만 컴파일러가 컴파일하는 과정에서 데이터를 추론하는 과정이 생기기 때문에 시간적인 면에서 생각해보면 타입 어노테이션(type annotation)이 좋습니다.