iOS/개념

[Swift] 기본 데이터 타입 (Character, String, Int, UInt, Float, Double, Bool, Any, AnyObject)

안경 쓴 귀니 2020. 11. 7. 01:10
반응형

스위프트에서 사용하는 기본 데이터 타입에 대해 알아보겠습니다.

 

  • 데이터 타입이란?

프로그램 내에서 다뤄지는 데이터의 종류

 

 

  • 데이터 타입 특징

- 구조체 타입 기반으로 구현됨

- 대문자 카멜 케이스를 사용

 

 

  • Character

- 하나의 문자

- 유니코드 9 문자 사용 (알파벳, 숫자, 한글, 특수문자 사용 가능)

- 큰따옴표를 사용

let alpabel: Character = "A"
let number: Character = "1"
let korean: Character = "ㄱ"
let special: Character = "☆"

 

  • String

- 문자열

- 유니코드9 문자 사용 (알파벳, 숫자, 한글, 특수문자 사용 가능)

- 큰따옴표 사용

- 멀티라인 사용 시 큰따옴표 세 개 사용

// 상수로 문자열 선언
let dog: String = "강아지"

// 빈 문자열 생성
var i: String = String()

// append를 사용하여 문자열 이어 붙임
i.append("나는")

// + 연산자로 문자열 이어 붙임
i = i + " " + dog + "를 좋아합니다."

// 문자 수 조회
print("dog 글자 수: \(dog.count)")	// 3

// 빈 문자열인지 확인
print("i가 빈 문자열인가?: \(i.isEmpty)")	// false

// 문자열 비교
let cat: String = "고양이"
var isSameString: Bool = false
isSameString = dog == cat
print("강아지 고양이 문자열 비교 : \(isSameString)")	// false
isSameString = dog == "강아지"
print("강아지 강아지 문자열 비교 : \(isSameString)")	// true

// 멀티 라인
let multiline = """
큰따옴표 세 개로 여러 줄 입력 가능
단, 큰따옴표 세 개 입력 후 다음 줄에 입력해야 하며
마지막 줄 입력 후에도 다음 줄에 큰따옴표 세 개를 입력해야 함
"문자열 안에서 큰따옴표 사용 가능"
"""
/*
큰따옴표 세 개로 여러 줄 입력 가능
단, 큰따옴표 세 개 입력 후 다음 줄에 입력해야 하며
마지막 줄 입력 후에도 다음 줄에 큰따옴표 세 개를 입력해야 함
"문자열 안에서 큰따옴표 사용 가능"
*/

 

  • Int, UInt

- 정수 타입

- Int: +, - 부호를 포함한 정수

- UInt: - 부호를 포함하지 않는 정수 (0과 + 부호를 포함)

- Int와 UInt는 각각 8비트, 16비트, 32비트, 64비트의 형태가 존재

  Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64 

- 10진수: 평소 사용하던 숫자

- 2진수: 접두오 0b

- 8진수: 접두어 0o

- 16진수 접두어 0x

let int10: Int = 30			// 30을 10진수로 표현
let int2: Int = 0b11110		// 30을 2진수로 표현
let int8: Int = 0o36		// 30을 8진수로 표현
let int16: Int = 0x1e		// 30을 16진수로 표현

 

* Int와 UInt 중 어떤 것을 사용해야 할까?

플랫폼에 따른 Int의 최댓값 이상 UInt의 최댓값 미만을 사용하게 되는 경우 이외에는 Int 타입을 사용하는 것이 좋습니다.

Int와 UInt를 사용하는 경우 완전히 다른 타입으로 인식되기 때며, 두 타입을 모두 사용하면 정수 타입의 변수끼리도 값을 교환할 때 많은 자원을 소모하기 때문에, 위 케이스 외에는 Int 타입을 사용하는것이 좋습니다.

 

 

반응형

 

  • Float, Double

- 실수. 소수

- Float: 32비트의 부동소수 표현

- Double: 64비트의 부동소수 표현

var height1: Float = 180.5
var height2: Double= 160.5

* Float와 Double 중 어떤 것을 사용해야 할까?

필요에 따라 둘 중 하나를 선택하여 사용할 텐데 무엇을 사용해야 할지 잘 모르는 상황이라면 Double을 사용하실 권장합니다.

 

  • Bool

- 참(true) 또는 거짓(false)

let isKorean: Bool = true
var isCold: Bool = false

 

  • Any, AnyObject

- Any: 함수 타입을 포함하여 모든 데이터 타입의 인스턴스 사용 가능 (Objective-C의 id와 동일)

- AnyObject: 모든 클래스의 인스턴스 사용 가능

Any와 AnyObject는 될 수 있으면 사용하지 않는게 좋다. 사용 시마다 타입 체크 및 형 변환을 해야 하기 때문에 불편하다.

// Any에 다양한 타입 변수 세팅
var someVar: Any = "someText"
print(someVar)  // "someText"

someVar = 123
print(someVar)  // 123

someVar = 155.5
print(someVar)  // 155.5

// 배열에 다양한 타입 세팅
var someArr: [Any] = [123, "abc", 155.5]
print(someArr[0])	// 123
print(someArr[1])	// "abc"
print(someArr[2])	// 155.5

* Any와 AnyObject는 될 수 있으면 사용하지 않는 것이 좋습니다.

타입에 엄격한 스위프트의 특성상 Any 또는 AnyObject로 선언된 변수의 값을 가져다 쓰려면 매번 타입 확인 및 변환을 해줘야 하는 불편함이 있을뿐더러 예기치 못한 오류의 위험을 증가시키기 때문입니다.

 

  • nil

- nil은 특정 타입이 아니라 '없음'을 나타내는 스위프트의 키워드입니다.

- 즉, 변수 또는 상에 값이 들어있지 않고 비어있음을 나타내는 데 사용합니다.

- nil일 때 해당 변수 또는 상수에 접근했을 때 잘못된 메모리 접근으로 런타임 오류가 발생합니다. (ex. Null Point Exception)

 

 

 

출처: <스위프트 프로그래밍 - 야곰>

반응형