[Swift 프로그래밍 3판] 3. 데이터 타입 기본
데이터 타입
프로그램 내에서 다뤄지는 데이터의 종류
구조체를 타입의 기반으로 삼아 Swift의 다양한 기능 (extension, Generic) 두루 사용하여 구현
(1) Int와 UInt
• Int : +, - 부호를 포함한 정수
• UInt : - 부호를 포함하지 않는 0을 포함한 양의 정수
※ 진수에 따른 정수 표현
- 10진수
- 2진수 : 접두어 0b 사용
- 8진수 : 접두어 0o 사용
- 16진수 : 접두어 0x 사용
let decimalInteger: Int = 28
let binaryInteger: Int = 0b11100
let octalInteger: Int = 0o34
let hexadecimalInteger: Int = 0x1C
(2) Bool
Boolean 타입으로, true / false만 값으로 가짐
(3) Float과 Double
부동소수점을 사용하는 실수
• Double : 64비트의 부동소수 표현
• Float : 32비트의 부동소수 표현
(4) Character
문자 (Swift는 유니코드 9 문자를 사용하므로 영어는 물론, 유니코드에서 지원하는 모든 언어 및 특수기호 등 사용 가능)
(5) String
문자열
※ String의 메서드 · 프로퍼티, 관련 연산자들
// 문자열 이어붙이기
// append 메서드 혹은 + 연산자를 통해 문자열 이어붙이기 가능
var hello: String = "Hello"
hello.append("!") // Hello!
let txt: String = "Append String"
hello += txt // Hello! Append String
// 접두어·접미어 확인
// hasPrefix, hasSuffix
hello.hasPrefix("He") // true
hello.hasSuffix("!") // false
// 대소문자 변환
// uppercased, lowercased
var convertString: String = "heLLo"
print(convertString.uppercased()) // HELLO
print(convertString.lowercased()) // hello
// 빈문자열 확인
// isEmpty
// 문자열 길이 확인
// count
// 여러 줄의 문자열
// 큰따옴표 3개
let greeting = """
안녕하세요
여러줄 String Test
"""
※ 특수문자
\n : 줄바꿈 문자
\\ : 문자열 내에서 백슬래시를 표현하고자 할 때 사용
\" : 문자열 내에서 큰따옴표를 표현하고자 할 때 사용
\t : 탭 문자
\0 : 문자열이 끝났음을 알리는 null 문자
(6) Any, AnyObject, nil
• Any : Swift의 모든 데이터타입을 사용할 수 있다는 뜻
데이터타입이 Any로 지정되어 있다면, 그 변수 또는 상수에 어떤 종류의 데이터 타입이든지 상관 없이 할당할 수 있음
• AnyObject : Any보단 조금 한정된 의미로 클래스의 인스턴스만 할당할 수 있음
• nil : Swift에서의 null, 특정 타입이 아니라 '없음'을 나타내는 키워드
만일 nil 값을 가진 상수 또는 변수에 접근하면 잘못된 메모리 접근으로 런타임 오류 발생 (null point exception)
※ Any와 AnyObject는 매번 타입 확인 및 변환을 해줘야하는 불편함과 예기치 못한 오류의 위험을 증가시키기 때문에 될 수 있으면 사용하지 않는 편이 좋음