자료형에 대한 개요를 설명하고, 자료형을 이해하는데 필요한 메모리 저장 방식에 대해 공부합니다.
-
자료형의 구분
- Built-in Data Type : integer, float, boolean, character, string
- Custom Data Type
-
메모리 구조와 크기
- 메모리 : 0과 1을 저장할 수 있는 저장 공간
- bit < byte (8 bit) < ... < Yotta
-
데이터 저장 방식
-
CPU와 메모리의 관계
- 주소 Register를 사용하여 CPU가 메모리에 접근
-
Overflow
- 메모리에 저장할 수 있는 값을 초과한 경우(swift에서는 error로 판단)
Swift에서 숫자를 표현하는 방법과 숫자를 저장하는 자료형에 대해 공부합니다.
-
숫자 리터럴
0.23 1.23e4 //10진수 지수 0xAp2 //16진수 지수 1_000_000 // , 대신 사용 10 //10진수 0b1010 //2진수 0o12 // 8진수 0xA // 16진수
-
정수 자료형과 실수 자료형
실수 default는 double (float 는 manually 지정)
Int8.min Int8.max MemoryLayout<Int8>.size
-
Signed와 Unsigned
// Signed : Int8, Int16, Int32, Int64 // Unsigned : UInt8, UInt16, UInt32, UInt64 let num = 123 type(of: num)
-
저장 가능한 값의 범위
-
불린 리터럴 (0과 1을 대신 사용 불가능 )
-
불린 자료형
let isValid : Bool = true let str = " " str.isEmpyt if isValid { ... } while !isValid { }
=
양 옆으로 whitespace가 있어야 error 안남
문자열과 문자를 표현하고 저장하는 방법에 대해 공부합니다.
-
문자열 리터럴
-
문자열 자료형
-
문자 자료형
let ch: Character = "1"
형식 추론을 통해 자료형을 생략할 때 추론의 단서가 무엇인지 공부합니다.
-
형식 추론(Type Inference)
-
Type Annotation
// 정수, 실수, char type을 지정할 때 사용 // compile 시간을 단축 let name : Type = value let value :Double value = 12.3
Swift가 안전한 언어인 이유를 형식 안정성을 통해 설명합니다.
let a = 7
// let b : Int8 = a // error(Cannot convert value of type 'Int'to specified...)
// let c : Int64 = a // 같은 메모리 크기임에도 불구하고 error
// let a : Int = 1.24 // error 특정 언어에서는 아래의 코드를
// 에러없이 1로 변환하여 실행하는 경우도 있음
let rate = 1.94
let amt = 10_000_000
let result = rate * Double(amt) // Type Conversion
서로 다른 형식의 값을 원하는 형식으로 변환하는 방법에 대해 공부합니다.
-
Type Conversion : 메모리에 저장된 값을 다른 형식으로 바꿔서 새로운 값을 생성함
-
Type Casting : 메모리에 저장된 값을 그대로 두고 컴파일러가 다른 형식으로 처리하도록 지시
-
Syntax :
Type(value)
let a = 123 let b = 4.56 Double(a) + b // 123.0 + 4.56 a + Int(b) // 123 + 4 let c = Int8(a) let d = Int.max // let e = Int8(d) //Fatal Error let str = "123" let num = Int(str) let str2 = "Hi" let num = Int(str) //type nil
자료형에 새로운 이름을 추가하는 방법에 대해 공부합니다.
-
Syntax :
typealias NewName = TypeName
typealias Coordinate = Double // 좌표값 let lat: Coordinate = 12.34 // latitude let lon: Coordinate = 56.78 // longitude