Swift

스위프트의 데이터 타입

소재훈 2021. 10. 8. 03:29

스위프트에서 기본으로 제공하는 데이터타입에 대해서 알아본다.

데이터타입은 프로그램 내에서 다뤄지는 데이터의 종류를 뜻하고, 스위프트의 기본 데이터 타입은 구조체를 타입의 기반으로 삼아 스위프트의 다양한 기능을 사용하여 구현되어 있다. 스위프트의 기본데이터 타입이 모두 구조체를 기반으로 구현되어 있다는 것에 주목하자.

스위프트의 모든 데이터 타입이름은 첫 글자가 대문자로 시작하는 대문자 카멜케이스를 사용한다.


Int 와 UInt

정수타입을 나타낸다. Int는 +, - 를 포함한 정수를 뜻하며, UInt는 0과 양의정수만을 표현한다. Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64로 8비트, 16비트 32비트 64비트의 형태로 표현할 수 있으면 타입의 최댓값과 최솟값은 max와 min프로퍼티를 사용해 알아볼 수 있다.

UInt는 Int의 범위를 넘어서고, 양의 정수만을 사용할 때사용하고 기본적으로는 Int를 사용하도록 하자.


Bool

Bool은 불리언 타입입니다. 불리언 타입은 참(true) 또는 거짓(false)만 값으로 가집니다.


Float 과 Double

Float과 Double은 부동소수점을 사용하는 실수이며 부동소수 타입이라고 합니다. 흔히 우리가 말하는 소수점 자리가 있는 수입니다. 부동소수 타입은 정수 타입보다 훨씬 넓은 범위의 수를 표현할 수 있습니다. 스위프트에는 64비트 부동소수 표현을 하는 Double과 32비트의 부동소수 표현을 하는 Float이 있습니다.

 

10진수는 지수를 뜻하는exponent의 첫글자를 따서 영어 알파벳 'e'또는 'E'를 사용하여 자릿수 확장 표현을 할 수 있습니다. 10진수에서는 다음처럼 123000을 표현할 수 있습니다.

1.23e5 = 1.23E5 = 1.23 x 10^5  = 123000.0

소수점 이하의 수는 e나 E다음에 음수를 써서 표현합니다.

16진수는 e 나 E대신 p나 P를 사용합니다.


Character

말그대로 문자를 의미합니다. 단어, 문장처럼 문자의 집합이 아닌 단 하나의 문자를 의미합니다. 스위픈트는 유니코드 9문자를 사용하므로 영어는 물론, 유니코드에서 지원하는 모든 언어 및 특수기호를 사용할 수 있다. 문자를 표현하기 위해서는 값의 앞 뒤에 큰따옴표를 사용하여 표현한다.


String

String은 문자의 나열, 즉 문자열이다. String 은 Character와 마찬가지로 유니코드 9를 사용할 수 있으며, 값의 앞뒤에 큰따옴표를 사용하여 표현합니다.

// 상수로 선언된 문자열은 변경이 불가능
let name: String = "Jaehoon"

// 이니셜라이저를 사용하여 빈 문자열을 생성할 수 있습니다.
// var키워드를 사용하여 변수를 생성했으므로 문자열의 수정 및 변경이 가능하다
var introduce: String  = String()

// append()메서드를 사용하여 문자열을 이어붙일 수 있다.
introduce.append("my name is")

// +연산자를 사용하여 문자열을 이어 붙일 수 있다.
introduce = introduce + " " + name + "입니다."
print(introduce)

// 문자열 내부에\(...)를 문자열 중간에 표현식을 나타낼 수 있다.

hasPrefix(), hasSuffix() 메서드를 사용하면 주어진 접두어와 접미사가 있는지 확인할 수 있다.

uppercased() 메서드는 문자열을 대문자로, loweredcased() 메서드는 문자열을 소문자로 바꾸어준다.

isEmpty프로퍼티를 통해 문자열이 비어있는지 확인 할 수 있으며, count프로퍼티를 사용해 문자열의 문자 개수를 얻을 수 있다.

 

문자열내에 다음과 같은 특수문자를 사용할 수 있다.

특수문자 설명
\n 줄바꿈문자
\\ 문자열 내에서 백슬래시를 표현하고자 할 때 사용
\" 문자열 내에서 큰따옴표를 표현하고자 할 때 사용
\t 탭 문자. 키보드의 탭키를 눌렀을 때와 같은 효과
\0 문자열이 끝났음을 알리는 null문자

Any, AnyObject와 nil

Any는 스위프트의 모든데이터 타입을 사용할 수 있다는 것을 의미한다. 변수 또는 상수의 데이터 타입이Any로 지정되어 있다면 그 변수 또는 상수에는 어떤 종류의 데이터 타입이든지 할당할 수 있다.

AnyObject는 Any보다는 조금 한정된 의미로 클래스의 인스턴스만 할당할 수 있다.

var someVar: Any = "Jaehoon"
someVar = 50
someVar = 100.1

위의 코드에서 Any로 선언한 변수에 문자열, 정수, 실수등의 타입을 할당하는 것을 볼 수 있다.

 

nil은 특정타입이 아니라 '없음'을 나타내는 스위프트의 키워드이다. 상수나 변수에 값이 들어가 있지 않고 비어있음을 나타낸다. 변수 또는 상수에 값이 없는 경우, 즉  nil이면 해당 변수 또는 상수에 접근 했을 때 잘못된 메모리 접근(memory access)으로 런타임 오류가 발생한다.