1.Swift既支持面向过程的编程机制,也支持面向对象的编程方式。(c++支持泛型编程,mark泛型编程)
2.Swift提供了隐式的程序入口。
3.Swift不支持原生的指针运算?
4.Swift是编译型语言。
5.Swift程序源代码中可以插入任意多个空白字符,空白字符包括空格、Tab、垂直Tab、退格、换行和换页。
6.Swift不允许直接将可执行代码放在类的定义中,允许直接定义函数。
7.对于只有Swift源代码的程序,该源程序中既可以定义一个或多个函数,也可以定义一个或多个类(还可以定义多个枚举、结构体),还可以直接放一行或多行可执行代码———在单个的Swift源程序中,这些可执行代码将作为Swift程序的入口。
8.对于包含多个Swift源代码的程序,文件名为main.swift的第一行可执行代码将作为Swift程序的入口。
9.Playground只是一个简单的测试环境,主要用于快速测试Swift语法功能和验证API功能。
10.框架,就是一系列函数、类等程序单元的集合,它们可系统地提供某一方面的功能。
11.文件的缩略信息图标为C的是类,图标为M的是方法,图标为Pr的是协议,图标为f的是函数
12.Swift的多行注释可以嵌套。
3.Swift语言区分大小写。
14.Swift是强类型的语言,要求所有的变量和常量必须先声明,声明时要么通过“ :类型”的形式显式指定该变量的类型,要么为该变量指定初始值——swift编译器将会根据该初始值确定变量的类型。
15.Swift允许一次声明多个变量,而且不需要多个变量具有相同的类型。
var a = 20,d:string,c = "swift"
16.Swift整型有以下几种类型:Int8、Int16、Int32、Int64、Int(整型长度与平台的原声字长相同)
17.无符号整型的最大取值是相应的有符号整型的最大取值的2倍加1
18.程序可通过访问不同整数类型的min和max属性来获取对应类型的最小值和最大值。
print(Int16.min)
print(Int16.max)
19.为了提高数值(包括浮点型)的可读性,Swift允许为数值(包括浮点型)增加下划线作为分隔符,也可以在数值前面添加额外的零。
20.Swift还提供了3个特殊的浮点型数值:正无穷大、负无穷大和非数。例如,使用一个正数除以0.0将得到正无穷大数值,使用一个负数除以0.0将得到负无穷大数值,0.0除以0.0或对负数开方将得到一个非数。(所有正无穷大数值都相等,所有负无穷大数值都相等,非数不与任何数值相等,甚至和非数自己都不相等)
21.只有浮点数除以0.0才可以得到正无穷大数值或负无穷大数值,但如果使用整型值除以整数0将会引起编译错误:division by zero(除0错误)。
22.Swift是一门强类型语言,数值计算过程中,必须统一数据类型,即进行显式的强制类型转换。当进行强制类型转换时,应该尽量向表数范围大的数据类型转换,这样程序会更加安全。Swift语言各种数值型的表数范围由小到大的顺序为:Int8->Int16->Int32->Int64->Float->Double.
23.在Swift语言中,Bool类型的值只能是true或false,不能用0或者是非0来代表。其他数据类型的值也不能转换成Bool类型。Bool类型的值主要用作旗标来进行流程控制。
24.元组(tuple)使用圆括号把多个值组合成一个复合值,元组内的值可使用任意类型,元组并不要求元组内的值具有相同的类型。为元组变量赋值时,必须为所有成员都指定值。元组的成员可以再次是元组。
25.Swift允许通过下标来访问元组的单个元素,还允许将元组的元素拆分成单个的常量或变量。如果程序只需要部分元组的元素,分解的时候可以使用下划线作为被忽略部分的占位符。
eg:print("test元组的第2个元素的第1个元素为:\(test.1.0)")
let(swift,oc,lua,_) = score
print("Swift 成绩:\(swift)、oc 成绩:\(swift)、lua 成绩:\(swift)")
26.定义元组时可使用key:value对的形式,相当于为元组的每个元素都指定名字。
27.元组其实是一种非常实用的数据类型,可以非常方便地记录数据表的一条记录。元组、元组类型还广泛应用于Swift函数声明,Swift函数支持多个返回值,这多个返回值也是以元组形式返回的。
28.在任何已有类型的后面紧跟?即可代表可选类型,可选类型的变量可用于处理“值缺失”的情况。Swift使用nil代表“值缺失”。
29.Swift中的nil与Objective-C中的nil完全不同,在Objective-C中,nil代表一个并不存在的对象指针;而在Swift中,nil并不代表指针——它是一个
30.Swift中结构体和类的主要区别是:1⃣️结构体不支持继承(自然也不支持类型转换了);2⃣️结构体不支持定义析构器;3⃣️结构体是值类型,而类是引用类型;
31.只有类的实例才能被称为对象;枚举、结构体的实例只能被称为实例,不能称为对象。
32.枚举类型:Swift的枚举不像C语言那么简单,也不像Java的枚举(Java的枚举是一种特殊的类),Swift的枚举是一种完全重新定义的类型。
33.与所有语言的枚举类型类似,Swift中的枚举用于管理一组有限的值的的集合。
34.Swift的枚举具有很多面向对象的特征,Swift的枚举支持计算属性,Swift的枚举支持实例方法和类型方法,Swift的枚举支持定义构造器来完成初始化,Swift允许通过扩展来增强原有枚举的功能,也允许枚举遵守指定协议来提供标准的功能。
35.typealias--类型别名
36.Swift不仅提供了面向过程的编程支持,也提供了全面的面向对象的编程支持,与普通面向对象的编程语言(只支持定义类)不同,Swift可以定义枚举、结构体、类3中面向对象的类型。其中使用枚举、结构体定义的变量是值类型,使用类定义的变量则是引用类型。
37.面向对象编程就是以客观世界为编程模型。客观世界的对象总有状态和行为,面向对象编程则为对象提供了属性和方法,其中属性用于描述对象的状态,而方法则用于描述对象的行为。
38.面向对象编程的典型3大特征:1⃣️封装:是指把对象的状态数据、实现细节隐藏起来,然后再暴露合适的方法允许外部程序改变对象的状态,这些暴露的方法可以保证修改之后对象的完整性,有private、internal和public等访问权限控制符;2⃣️继承:子类继承父类,即可获得父类定义的属性和方法。单继承支持:每个子类最多只能有一个直接父类。Swift也通过协议弥补了单继承灵活性不足的缺点。3⃣️多态:多态可以充分利用面向对象的灵活性。
39.在Java、Ruby中,对象和实例是完全相同的。但在Swift中,实例和对象是不同的,只有类的实例可以被称为对象,而结构体和枚举的实例则只能称为实例,不能称为对象。
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.