Swift学习笔记,语法篇-- 数据类型

学任何一门编程语言,都是从"Hello,world!"开始的。Swift编程之旅也由此开始:

print("Hello,World!")

一 数据类型概括

1.通用数据类型

Swift提供的数据类型有:Int, Double, Float, Bool, String

Swift提供的集合类型包括:Array, Dictionary, Set

Swift提供的其他辅助类型: enum, Struct

注意:1.以上类型,跟objective-c相比,都是值类型,而不是引用类型。在程序中使用以上任何一种类型,都考虑为值类型,存在内存的栈区,由系统自动管理内存,在赋值的时候都发生值拷贝操作。

   2.String,Array,Dictionary,Set,这些集合类型是否可变,与Objective-C不同,是根据定义这些类型的时候声明的是var还是let来决定,用var表示变量,意为可以进行改变,如果用let表示常量,意为不能变的集合

Swift唯一提供的引用类型:Class

注意:存在内存中的堆区,赋值时引起引用计数的改变,这部分内存由程序开发者管理,深刻理解引用计数原理,注意规避引用闭环的发生,避免造成内存泄漏。

2.特有数据类型

Swift提供特有类型:Tuple,元组,是一个临时存储数据的容器,若要存储的临时数据比较多,则考虑为Struct或Class更为合适

还有可选类型:Int?, Double?, String?等,在任何一类型名称后面加?,就是可选类型。可选类型意为:有相应的值为x,或没有值,它等于nil

二 类型声明

let maximumNumberOfLoginAttempts = 3 //常量
var currentLoginAttempt = 0 //变量
与下面写法具有相等效果
let maximumNumberOfLoginAttempts: Int = 3 //常量
var currentLoginAttempt: Int = 0 //变量

说明:Swift编辑器做类型推断,如果没有声明类型,可通过赋值判断当前类型。变量或常量名称遵从其他编程语言规则,以字母或下划线开头,包含字母、下划线、数字

为提高代码通用性,苹果官方推荐的数据类型应用规范:

整型:只要没有特殊要求,无论是无符号的UInt或者Int32等,一般都用Int来代替

浮点型:涉及到UIKit视图计算的都用CGFloat,其他逻辑运算统一用Double

字面值举例:

let decimalInteger = 17    //十进制
let binaryInteger = 0b10001 //二进制前面加0b
let octalInteger = 0o21 //八进制前面加0o
let hexadecimalInteger = 0x11 //十六进制前面加0x

类型转换:

let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine

let anotherPi = 3 + 0.14159

不同类型的变量或常量在做运算时,要统一类型,但是字面值做运算时就不需要转换,因为编辑器自动把3推断为Double类型