Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JavaScript
- client-side-rendering
- beforePopState
- 중첩함수
- 72410
- lineending
- 비반환함수
- 약타입언어
- 동적언어
- DelayInput
- replacingOccurrences
- reactnative android
- 데이터타입함수
- reactnavigation
- 17681
- Server-Side-Rendering
- 스위프트
- ReactNative
- SWIFT
- 함수형프로그래밍
- 프로그래머스
- multiline
- textinput
- switch구문
- 리액트네이티브
- 옵셔널
- 약타입
- ios
- next.js
- 나를부르는숲
Archives
- Today
- Total
으니의 개발로그
[Swift] 데이터 타입(Data Type, 자료형) 본문
[Swift] 데이터 타입(Data Type, 자료형)
이 글은 Swift 프로그래밍 책을 읽고 요약한 내용입니다.
데이터 타입 : 프로그램 내에서 다뤄지는 데이터의 종류
스위프트의 기본 데이터 타입은 모두 구조체를 기반으로 구현되어 있음
데이터 타입의 이름은 첫 글자가 대문자로 시작하는 대문자 카멜케이스를 사용함
Int와 UInt
- 정수 타입
Int
: +, - 부호를 포함한 정수Uint
: - 부호를 포함하지 않는 0을 포함한 양의 정수Int
와UInt
타입의 최댓값과 최솟값은 각각 max와 min 프로퍼티로 알아볼 수 있음Int
와UInt
는 각각 8비트, 16비트, 32비트, 64비트의 형태가 있음. 즉,Int8
,Int16
,Int32
,Int64
,UInt8
,UInt16
,UInt32
,UInt64
등으로 저장할 수 있는 데이터의 크기에 따라 타입이 분리되어 있음- 시스템 아키텍처에 따라
Int
와UInt
의 타입이 달라짐. 예를 들어 32비트 아키텍처에서는Int32
가Int
타입으로,UInt32
가UInt
타입으로 지정되고 64비트 아키텍처에는Int64
가Int
타입으로,UInt64
가UInt
타입으로 지정 됨
var integer: Int = -100
let unsignedInteger: UInt = 50 // UInt 타입에는 음수값을 할당할 수 없음
print("integer 값: \(integer), unsignedInteger 값: \(unsignedInteger)")
/* integer 값: -100, unsignedInteger 값: 50 */
print("Int 최대값: \(Int.max), Int 최소값: \(Int.min)")
/* Int 최대값: 9223372036854775807, Int 최소값: -9223372036854775808 */
let largeInteger: Int64 = Int64.max
let smallUnsignedInteger: UInt8 = UInt8.max
print("Int64 최대값: \(largeInteger), UInt8 최대값: \(smallUnsignedInteger)")
/* Int64 최대값: 9223372036854775807, UInt8 최대값: 255 */
let tooLarge: Int = Int.max + 1 // Int 표현 범위를 초과하므로 오류를 냄
let cannotBeNagetive: UInt = -5 // UInt는 음수가 될 수 없으므로 오류를 냄
integer = unsignedInteger // 오류! 스위프트에서 Int와 UInt는 다른 타입
integer = Int(unsignedInteger) // Int 타입의 값으로 할당해주어야 함
Bool
- 불리언 타입으로 참(true) 또는 거짓(false)만 값으로 가짐
var boolean: Bool = true
boolean.toggle() // true - false 반전
print(boolean)
/* false */
let iLoveYou: Bool = true
let isTimeUnlimited: Bool = false
print("시간은 무한합니까?: \(isTimeUnlimited)")
/* 시간은 무한합니까?: false */
Character
-
말 그대로 '문자'를 의미. 단어, 문장처럼 문자의 집합이 아닌 단 하나의 문자를 의미함
-
스위프트는 유니코드 9 문자를 사용하므로 영어는 물론, 유니코드에서 지원하는 모든 언어 및 특수기호 등을 사용할 수 있음
- 스위프트 코드를 작성할 때도 유니코드 문자를 모두 사용할 수 있음. ex)
let 이름: String = "jieun"
- 스위프트 코드를 작성할 때도 유니코드 문자를 모두 사용할 수 있음. ex)
-
문자를 표현하기 위해서는 값의 앞 뒤에 큰따옴표를 사용하여 표현
let alphabetA: Character = "A"
print(alphabetA)
/* A */
// Character 값에 유니코드 문자를 사용할 수 있음
let commandCharacter: Character = "♡"
print(commandCharacter)
/* ♡ */
// 한글도 유니코드 문자에 속하므로 스위프트 코드의 변수 이름으로 사용할 수 있음
let 한글변수이름: Character = "ㄱ"
print("한글의 첫 자음: \(한글변수이름)")
/* 한글의 첫 자음: ㄱ */
String
- 문자의 나열, 즉 문자열
String
은Character
와 마찬가지로 유니코드 9를 사용할 수 있음- 값의 앞뒤에 큰따옴표를 사용하여 표현
// 상수로 선언된 문자열을 변경이 불가능함
let name: String = "seonho"
// 이니셜라이저를 사용하여 빈 문자열을 생성할 수 있음
// var 키워드를 사용하여 변수를 생성했으므로 문자열의 수정 및 변경이 가능
var introduce: String = String()
// append() 메서드를 사용하여 문자열을 이어붙일 수 있음
introduce.append("제 이름은")
// + 연산자를 통해서도 문자열을 이어붙일 수 있음
introduce = introduce + " " + name + "입니다."
print(introduce)
/* 제 이름은 seonho입니다. */
// name에 해당하는 문자의 수를 셀 수 있음
print("name의 글자 수: \(name.count)")
/* name의 글자 수: 6 */
// 빈 문자열인지 확인해볼 수 있음
print("introduce가 비어있습니까?: \(introduce.isEmpty)")
/* introduce가 비어있습니까?: false */
// 유니코드의 스칼라값을 사용하면 값에 해당하는 표현이 출력됨
let unicodeScalarValue: String = "\u{2665}"
print(unicodeScalarValue)
/* ♥ */
특수문자
특수문자 | 설명 |
---|---|
\n | 줄바꿈 문자 |
\\ | 문자열 내에서 백슬래시를 표현하고자 할 때 사용 |
\" | 문자열 내에서 큰따옴표를 표현하고자 할 때 사용 |
\t | 탭 문자. 키보드의 탭 키를 눌렀을 때와 같은 효과 |
\0 | 문자열이 끝났음을 알리는 null 문자 |
print("문자열 내부에\n 이런 \"특수문자\"를 \t사용하면 \\이런 놀라운 결과를 볼 수 있습니다")
/*
문자열 내부에
이런 "특수문자"를 사용하면 \이런 놀라운 결과를 볼 수 있습니다
*/
print(#"문자열 내부에서 특수문자를 사용하기 싫다면 문자열 앞, 뒤에 #을 붙여주세요 그러면 \n \t 등이 그대로 출력됩니다"#)
/* 문자열 내부에서 특수문자를 사용하기 싫다면 문자열 앞, 뒤에 #을 붙여주세요 그러면 \n \t 등이 그대로 출력됩니다 */
let number: Int = 100
print(#"특수문자를 사용하지 않을 때도 문자열 보간법을 사용하고 싶다면 이렇게 \#(number) 해보세요 #을 넣지 않으면 \(number) 그대로 출력됩니다"#)
/* 특수문자를 사용하지 않을 때도 문자열 보간법을 사용하고 싶다면 이렇게 100 해보세요 #을 넣지 않으면 \(number) 그대로 출력됩니다 */
Any, AnyObject와 nil
Any
: 스위프트의 모든 데이터 타입을 사용할 수 있다는 뜻AnyObject
:Any
보다는 조금 한정된 의미로 클래스와 인스턴스만 할당할 수 있음
var someVar: Any = "seonho" // Any로 선언된 변수에는 문자열도
someVar = 50 // 정수도
someVar = 100.1 // 실수, 또는 어떤 타입의 값이라도 할당할 수 있음
nil
: '없음'을 나타내는 스위프트의 키워드. 즉, 변수 또는 상수에 값이 들어있지 않고 비어있음을 나타내는 데 사용nil
이면 해당 변수 또는 상수에 접근했을 때 잘못된 메모리 접근(memory access)으로 런타임 오류가 발생
'Swift > 책 정리' 카테고리의 다른 글
[Swift] 데이터 타입 고급(1) - 타입 별칭, 튜플 (0) | 2021.01.07 |
---|---|
[Swift] String 타입의 다양한 기능 (0) | 2021.01.06 |
[Swift] 변수와 상수 (0) | 2021.01.04 |
[Swift] 주석 (0) | 2021.01.03 |
[Swift] 콘솔 로그(Console Log) / print() 함수와 dump() 함수 (0) | 2021.01.02 |