Swift 2. 데이터 타입 기본
Swift 2. 데이터 타입 기본
* 데이터 타입
프로그램 내에서 다뤄지는 데이터의 종류
Swift의 기본 데이터 타입들은 모두 구조체를 기반으로 구현됨
Swift의 모든 데이터 타입의 이름은 대문자로 시작
1. Int & UInt
정수 타입
Int 타입: +, - 타입을 포함한 정수
UInt 타입: -를 포함하지 않는 0을 포함한 양의 정수
8, 16, 32, 64 비트의 형태가 있음
Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64
저장할 수 있는 데이터의 크기에 따라 타입이 분리
시스템이 몇 비트 환경이냐에 따라 Int와 UInt의 크기가 달라짐
ex) 32비트 환경 : Int -> Int32 / 64비트 환경 : Int -> Int64
최댓값과 최솟값은 각각 max, min 프로퍼티로 알아볼 수 있음
* 예시
print(Int.max)
print(Int8.max)
Swift는 자료형에 엄격해서 Int와 UInt를 완전히 다른 타입으로 인식 -> 자료형을 선택할 때 잘 선 택해야 함 (Int 로는 표현이 안되고 UInt 로만 표현이 되는 범위의 값을 이용할 때만 UInt를 사용하고 나머지 경우에는 Int를 사용할 것을 권장
- 진수에 따라 정수 표현하기
10진수 : 그냥 표현
2진수 : 0b~
8진수 : 0o~
16진수 : 0x~
* 예시
let decInt : Int = 28 // 10진수 28
let binInt : Int = 0b11100 // 2진수 28
let octInt : Int = 0o34 // 8진수 28
let hexInt : Int = 0x1c // 16진수 28
print("10진수 : \(decInt)")
print("2진수 : \(binInt)")
print("8진수 : \(octInt)")
print("16진수 : \(hexInt)")
2. Bool
불리언 타입
true, false만 값으로 가짐
* .toggle()
불리언 값을 반전시키는 함수
* 예시
var boolean : Bool = true
print(boolean)
boolean.toggle()
print(boolean)
3. Float & Double
부동소수점을 사용하는 실수
부동소수타입
정수 타입 보다 훨씬 넓은 범위의 수를 표현
Float : 32 비트. 6자리 숫자까지 표현 가능 (64비트 환경)
Double : 64 비트. 15자리 숫자까지 표현 가능 (64비트 환경)
둘 중 어느 것을 사용해야 할지 잘 모르는 상황이면 Double을 사용하는 것을 권장
* 예시
var floatValue: Float = 1234567890.1
let doubleValue: Double = 1234567890.1
// Flaot이 수용할 수 있는 범위를 넘어서서 Float에서는 정확도가 떨어짐
// Double은 수용할 수 있는 범위의 수이기 때문에 정확하게 표현됨
print("floatvalue: \(floatValue)")
print("doubleValue : \(doubleValue)")
floatValue = 123456.1
// Float이 수용할 수 있는 범위의 값을 주면 정확하게 표현함
print(floatValue)
* 랜덤 숫자 만들기
Swift 4.2 부터 random() 메서드가 추가되어 랜덤으로 정수와 실수를 생성할 수 있음
() 안에 생성할 범위를 '...' 으로 표현
* 예시
print(Int.random(in: -10...10))
print(UInt.random(in: 0...10))
print(Double.random(in: -3.5...5.7))
print(Float.random(in: 2.3...7.5))
4. Character
문자
문자의 집합이 아닌 하나의 문자
Swift는 유니코드9를 지원해서 영어는 물론이고 유니코드에서 지원하는 모든 언어 및 특수기호 등을 사용할 수 있음
값 앞뒤에 큰 따옴표(" ")로 묶어줌
한글과 이모티콘을 코드에 사용할 수 있으나 권장 하지는 않음
* 예시
let alphabetA: Character = "A"
print(alphabetA)
// Character 값에 유니코드 이모티콘 적용
let commandcharacter: Character = "🙏"
print(commandcharacter)
// 변수 이름을 한글로 하기
let 한글변수이름: Character = "ㄱ"
print("한글의 첫 자음: \(한글변수이름)")
5. String
문자열. 문자의 나열
Character와 마찬가지로 유니코드9를 사용
큰 따옴표로(" ") 묶어줌
- 빈 문자열 생성하기
이니셜라이저를 사용해서 빈 문자열 생성
* 예시
var emptyStr : String = String()
- 유니코드로 이모티콘 출력
문자열 변수나 상수에 "\u{유니코드}"를 대입하고 출력하면 해당 유니코드의 이모티콘이 출력
* 예시
let emoji1 : String = "\u{2665}"
let emoji2 : String = "\u{1F60A}"
print(emoji1)
print(emoji2)
- 문자열 다루기
문자열을 다루는 것은 까다로운 부분이지만 Swift에서는 문자열을 다루는 많은 메서드들과 프로퍼티들을 제공해서 문자열을 다루기 쉽도록 지원
* 문자열 결합
+ 나 += 연산자를 사용해서 문자열 결합
let hello : String = "Hello"
let world : String = "World"
print(hello + " " + world)
var hw : String = hello
hw += " "
hw += world
print(hw)
<실행결과>
Hello World
Hello World
* 문자열 추가
.append() 메서드를 사용해서 문자열을 이어붙일 수 있음
var hw : String = String()
hw.append("Hello ")
hw.append("World")
print(hw)
<실행결과>
Hello World
* 연산자를 통한 문자열 비교
let hello : String = "Hello"
let world : String = "World"
var isSame : Bool = true
isSame = hello == "Hello"
print(isSame)
isSame = hello == "World"
print(isSame)
<실행결과>
true
false
* 메서드를 통한 저두어, 접미어 확인
.hasPrefix() : ()안의 문자열과 앞에서 부터 일치하는 지 확인
.hasSuffix() : () 안의 문자열과 뒤에서 부터 일치하는지 확인
.contains() : () 안의 문자가 포함되어있는지 확인 (( ) 안에 문자열 입력시 에러 발생)
let hello : String = "Hello"
let world : String = "World"
print(hello.hasPrefix("He"))
print(hello.hasPrefix("HE"))
print(world.hasSuffix("LD"))
print(world.hasSuffix("ld"))
print(hello.contains("l"))
print(hello.contains("r"))
<실행결과>
true
false
false
true
true
false
* 메서드를 통한 대소문자 변환
.uppercased() : 모든 문자열 대문자로 변환
.lowercased() : 모든 문자열 소문자로 변환
et hello : String = "Hello"
let world : String = "World"
print(hello.uppercased())
print(world.lowercased())
<실행결과>
HELLO
world
* 프로퍼티를 통한 빈 문자열 확인
.isEmpty : 해당 문자열이 빈 문자열인지 아닌지를 나타내는 프로퍼티 (빈 문자열이면 true)
let hello : String = "Hello"
let world : String = "World"
var isEmptyStr : Bool
let empty : String = ""
isEmptyStr = hello.isEmpty
print(isEmptyStr)
isEmptyStr = empty.isEmpty
print(isEmptyStr)
<실행결과>
false
true
* 프로퍼티를 이용해 문자열 길이 확인
.count : 문자열의 길이를 나타내는 프로퍼티
let hello : String = "Hello World"
let hi : String = "Hi!"
let empty : String = " "
print(hello.count)
print(hi.count)
print(empty.count)
11
3
1
* 코드에서 여러줄의 문자열 사용하기
큰 따옴표 세개로 묶어줌
따옴표를 쓰고 한 줄 띄어서 내용을 쓰고 또 한 줄 띄어서 큰 따옴표 세개 작성
let hello : String = """
Hello World
Swift is great!
"""
print(hello)
<실행결과>
Hello World
Swift is great!
- 특수 문자
문자열 내에서 일정 기능을 하는 제어 문자
백슬래시(\) 에 특정한 문자를 조합해서 사용
문자열 내에서 특수문자를 사용하지 않으려면 문자열 앞뒤에 '#' 을 붙임(#" "#)
\n : 줄바꾸기
\\ : 문자열 내에서 \ 사용
\" : 문자열 내에서 " 사용
\t : 탭 (Tab)
\0 : 문자열이 끝났음을 알림
6. Any, AnyObject, nil
- Any
Swift에서 모든 데이터 타입을 사용할 수 있다는 뜻
변수나 상수의 데이터 타입이 Any로 지정 되었다면 해당 변수나 상수에는 어떤 종류의 데이터 타입도 할당될 수 있음
var someVar : Any = "Hello World"
print(someVar)
someVar = 100
print(someVar)
someVar = 3.141592
print(someVar)
<실행결과>
Hello World
100
3.141592
Any 타입으로 선언된 변수 someVar 에 문자열, 정수, 실수형 데이터가 대입 되었는데도 오류 없이 정상 작동
- AnyObject
Any 보다 조금 한정된 의미
클래스의 인스턴스에만 할당할 수 있음
- nil
'없음'을 나타내는 Swift 키워드
변수나 상수가 값이 없이 비어있음을 의미
변수나 상수가 nil인 경우 접근하면 에러 발생(잘못된 메모리 접근)
* Never
특정 함수의 반환 타입으로 사용될 수 있는 데이터 타입







댓글
댓글 쓰기