[Swift] 데이터 타입 (Data Type)

EarthSea·2024년 3월 6일
0

🚩 Swift 문법

목록 보기
4/5
post-thumbnail

❓ 타입이 왜 필요한가

: 컴퓨터는 변수나 상수를 선언하면 메모리에 공간을 생성한다. 이 때, 데이터가 어떤 형태로 저장해야하며 데이터의 크기가 얼만큼인지 정해주어야 컴퓨터가 인지할 수 있다. 또한 컴퓨터의 메모리 공간도 보다더 효율적으로 사용할 수 있을 것이다.


1) 스위프트의 데이터 타입(Type)

키워드타입 설명예시
Int🔸 / 정수정수. 8바이트(64비트환경에서)5, 7, -123, 0
Float / 실수부동소수(6자리). 4바이트(32비트)3.14, -14.187
Double🔸 / 실수부동소수(15자리). 8바이트(64비트)3.14, -14.187
Character / 문자하나의 문자. 쌍따옴표 사용(“”)“A”,“a”,“한”,“ ”
String🔸 / 문자열문자열. 쌍따옴표 사용(“”)“안녕하세요”, “스티브 잡스” , “”
Bool🔸 / 참과 거짓참/거짓true, false
기타UInt, UInt64, Int32 ...

✔️ Int

정수형 타입으로 -2,147,483,648 ~ 2,147,483,647 사이의 정수값을 표현가능하다.

var age: Int = 2

✔️ Float

32비트의 부동 소수를 표현하는 타입으로 소수점 이하 6자리까지 정확한 표현이 가능하다.

var interestRate: Float = 1.2345678910
print("이자율은 \(interestRate)% 입니다.")
// 출력 : 이자율은 1.2345679% 입니다.

→ 소수점 이하 10자리를 입력하더라도 6자리까지만 정확한 값을 도출해내고, 아래의 값은 반올림하여 도출해낸다.


✔️ Double

64비트의 부동 소수를 표현하는 타입으로 소수점 이하 15자리까지 정확한 표현이 가능하다.

var interestRate2: Double = 1.2345678910111213
print("이자율은 \(interestRate2)% 입니다.")
// 출력 : 이자율은 1.2345678910111213% 입니다.

✔️ Bool

참과 거짓을 표현하는 타입으로 참은 true, 거짓은 false로 표현한다.

var isOpen: Bool = true
var isLogged: Bool = false

if isOpen {
    print("문이 열려 있습니다.")
}else {
    print("문이 닫혀 있습니다.")
}

// 출력 : 문이 열려 있습니다.

func checkLoginStatus(_ isLogged: Bool){
    if isLogged {
        print("로그인되었습니다.")
    }else {
        print("로그아웃되었습니다.")
    }
}

checkLoginStatus(isLogged)
// 출력 : 로그아웃되었습니다.

✔️ String

문자열을 표현하는 데이터타입으로 한 줄은 “문자열” 로 여러줄은 “””문자열“”” 로 정의가능하다.

// 빈 문자열 표현하는 방법
var emptyString: String = ""
var anotherEmptyString = String()

print(emptyString)
// 출력 : 
print(anotherEmptyString)
// 출력 :

var introduce:String = """
안녕하세요
저는
배지해
입니다.
"""

print(str)
// 출력 : 안녕하세요
//저는
//배지해
//입니다.
  • 문자열은 + 연산을 이용해 이어 붙일 수 있다.

    var variableString = "Mom"
    variableString += " and Dad"
    
    print(variableString)
    // 출력 : Mom and Dad

✔️ Character

하나의 문자를 표현하는 데이터타입

var cha: Character = "a"

// 빈문자열은 Error
// cha = ""

// 공백문자는 가능
cha = " "
  • Character 타입으로 된 배열을 합치는 방법 → String으로 타입변환 사용
    
    var catCharaters: [Character] = ["c","a","t","!"]
    var catString = String(catCharaters)
    
    print(catString)
    // 출력 : cat!
  • String 타입으로 된 배열을 합치는 방법 → joined() 사용
    var catCharaters1: [String] = ["cdd","aee","tee","!!!"]
    
    // var catString1 = String(catCharaters1) 🚨Error
    
    print(catCharaters1.joined())
    // 출력 : cddaeetee!!!
  • 스위프트에서 데이터 타입의 첫글자는 대문자를 사용하여야 한다.
    var b: Int = 7
    
    var c: Double = 3
    
    var chr3: Character = " "
    
    let str: String = ""



2) 타입의 주석( Type Annotation )

: 변수를 선언하면서 타입을 명확하게 지정하는 방식

var name: String = “홍길동”
var value: Double = 5.345



3) 타입의 추론( Type Inference )

: 변수를 선언할 때, 타입을 지정하지 않아도 컴파일러가 타입을 유추하는 방식

var name = “홍길동”
type(of: name) // 결과 : String

var num1 = 2
type(of: num1) // 결과 : Int

❗️ type(of: 변수명) - 변수의 타입을 확인하는 함수이다.


컴파일러란?
소스 코드를 분석하여 기계어로 번역해주는 프로그램
소스코드분석 → 의미분석 → 코드최적화 → 코드 생성의 단계를 거침



4) 타입의 안정성( Type Safety )

: 스위프트는 데이터 타입을 명확하게 구분하여 사용하는 언어

❗️ 스위프트는 다른 타입끼리 계산할 수 없다.

var number = 12 // Int

// number = 3.14 -> 에러  
// Int형 데이터 타입으로 선언된 변수에 실수를 넣으면 에러가 남

var x = 10
var y = 10.0

// var z = x + y 🚨 Error
// x와 y는 각각 Int 타입, Double 타입이므로 연산이 불가능함.



5) 타입(형) 변환(Type Conversion)

: 타입을 변환하는 방법

  • 기존에 메모리에 저장된 값을 다른 형식으로 바꿔서, 새로운 값을 생성해서 다른 메모리 공간에 다시 저장

    let str2 = "123"
    type(of: str2)
    // 결과 : String
    
    let number1 = Int(str2)
    type(of: number1)
    // 결과 : Int
    print(number1)
    // 결과 : Optional(123)
  • 타입형 변환에 실패하였을 때, nil 값이 리턴될 수 있다.

    let doubleString = "321.2"
    let number2 = Int(doubleString)
    
    type(of: number2)
    // 결과 : Int
    print(number2)
    // 결과 : nil



6) 타입 애일리어스(Type Alias)

: 프로그래밍에서 (수학의)치환과 동일한 문법 (타입만 치환 시켜서 사용가능)

typealias Name = String
typealias Something = (Int) -> String

func someFunction(completionHandler: (Int) -> String) {
 
}

func someFunction2(completionHandler: Something) {
 
}

타입 애일리어스는 왜 써

: 길게 쓸때 유용하고, 문법이 간단해진다. ( 코드의 가독성을 높이기 위해 )



profile
I'm Junior iOS developer 배지해.

0개의 댓글