Swift의 데이터타입
Swift도 타 언어처럼 Int, UInt, Bool, Double, Float 등의 다양한 자료형이 존재합니다
그리고 스위프트만의 Nil, AnyObject 개념도 존재합니다
스위프트는 타입 안전 언어로 데이터 타입에 엄격한 편입니다
변수의 데이터타입이 식별되면 그 변수는 다른 타입의 데이터를 저장할 수 없게 됩니다
타입별 데이터 표현가능 크기는 하단의 표에 기록해 두었습니다
이 데이터가 식별되는 방법은 2가지가 있습니다
1. 타입 어노테이션 (명시)
2. 타입추론
타입 어노테이션은 변수, 상수를 선언한 시점에서 타입을 명시하는 방법
타입추론은 변수, 상수를 선언할 때 타입을 명시하지 않고 컴파일러가 타입을 정하는 방식입니다
Bool
참(true), 거짓(flase)만 가질 수 있는 타입
var someBool: Bool = true
print(someBool)// true
someBool = 1 //컴파일에러, Bool타입엔 정수할당 불가
|
cs |
Int
정수를 저장하기 위한 타입
Int8, Int16등 다양한 비트의 정수를 지원하지만
기본으로 제공되는 Int형(64비트)가 권장됩니다
var someInt: Int = 23
print(someInt) //23
someInt = 10.5 //컴파일에러
|
cs |
Int의 표현 범위는 다음과 같습니다
print("Int = \(Int.min) ~ \(Int.max)")
//약 -922경 ~ 922경
print("Int32 = \(Int32.min) ~ \(Int32.max)")
//약 -21억 ~ 21억
|
cs |
UInt
부호가 없는 정수형 타입입니다
1
2
3
|
var someUInt: UInt = 23
print(someUInt) //23
someUInt = -10 //컴파일에러
|
cs |
※UInt타입에 표현범의 내의 다른 정수타입(Int)를 넣으도 컴파일 에러가 발생한다
UInt의 표현범위는 다음과 같습니다
1
2
3
4
|
print("UInt = \(UInt.min) ~ \(UInt.max)")
//약 0 ~ 1844경
print("UInt32 = \(UInt32.min) ~ \(UInt32.max)")
//약 0 ~ 42억
|
cs |
Float
실수를 저장하기 위한 타입, 32비트로 소수점 6자리 정확도 입니다
1
2
|
var someFloat: Float = 23.25
print(someFloat) //23.25
|
cs |
Double
실수를 저장하기 위한 타입, 64비트로 소수점 15자리 정확도 입니다
1
2
|
var someDouble: Double = 16.9
print(someDouble) //16.9
|
cs |
※Double타입에 Float형을 넣어도 컴파일 에러가 발생한다
Character
문자를 저장하기 위한 타입, ''가 아닌 ""으로 문자를 감싸야 하며 유니코드를 지원합니다
1
2
3
4
|
var myChar1: Character = "A"
var myChar2: Character = "🤑"
print(myChar1, myChar2)// A 🤑
myChar1 = "abc"//컴파일 에러
|
cs |
※변수 선언할 때 Character를 생략하면 String형이 되어버림
String
문자열을 저장하기 위한 타입, 문자열 보간을 통해 변수, 상수, 함수호출 등의 조합으로 새로운 문자열을 만들 수 있다
1
2
3
|
var myString: String = "나는 "
var message:String = myString + "공부한다 " + "🤓"
print(message) // 나는 공부한다 🤓
|
cs |
Any
Nil
var
let
자료형의 종류 및 표현범위
타입 | 설명 | 표현범위 |
Bool | 참, 거짓 | True / False |
Int(64) | 기본 정수형 타입, 64비트 이다 | -9223372036854775808 ~ 9223372036854775807 |
Int8 | 8비트의 정수형 타입 | -128 ~ 127 |
Int16 | 16비트의 정수형 타입 | -32768 ~ 32767 |
Int32 | 32비트의 정수형 타입 | -2147483648 ~ -2147483647 |
UInt(64) | 부호가 없는 정수형 타입, 64비트 이다 | 0 ~ 18446744073709551615 |
UInt8 | 부호가 없는 8비트 정수형 타입 | 0 ~ 255 |
UInt16 | 부호가 없는 8비트 정수형 타입 | 0 ~ 65535 |
UInt32 | 부호가 없는 8비트 정수형 타입 | 0 ~ 4294967295 |
Float | 실수형 타입, 소수점6자리 정확도 | 1.175494e-38 ~ 3.402823e+38 |
Double | 실수형 타입, 소수점15자리 정확도 | 2.225073858507201e-308 ~ 1.797693134862316e+308 |
Character | 문자 하나를 가지는 타입 | - |
String | 문자열을 가지는 타입 | - |
자료형의 크기를 확인하려면 아래의 코드를 활용하면 됩니다
1
2
|
print("UInt의 크기 = \(UInt.min) ~ \(UInt.max)")
//약 0 ~ 1844경
|
cs |
타입추론(type inference)
Swift언어에서는 변수의 타입을 명시하지 않아도 컴파일러가 변수의 타입을 추론할 수 있습니다
1
2
3
4
|
var num1:Int = 1
var num2 = 2
print(type(of:num1))//Int
print(type(of:num2))//Int
|
cs |
다만 주의할 점이 있는데 Float형, Character형을 명시하지 않으면 자동으로 Double형, String형으로 변하게 됩니다
1
2
3
4
|
var myNum1 = 1.1
var myNum2 = "A"
print(type(of:myNum1))//Double
print(type(of:myNum2))//String
|
cs |
'🍎iOS프로그래밍 > 오늘의 공부' 카테고리의 다른 글
Swift 클로저(Closure) 후행 클로저(trailing Closure) / iOS프로그래밍 (0) | 2021.10.01 |
---|---|
Swift 일급객체(First-class object) 일급시민(First-class citizen) / iOS프로그래밍 (0) | 2021.10.01 |
Swift의 함수 형태 및 사용 / iOS프로그래밍 (0) | 2021.09.26 |
Swift의 반복문,제어문(if문, for문, repeat-whlie문 ,guard문, switch-case문) / iOS프로그래밍 (0) | 2021.09.26 |
Swift의 옵셔널(Optional) 개념 이해하기 / iOS 프로그래밍 (0) | 2021.09.17 |
댓글