【主要内容】
1.整型
2.浮点型
3.类型安全和类型推断
4.数值型字面量
5.数值类型转换
6. 类型别名
1、整型
1.1 整数和整型
编程语言中的整型是用来表示我们自然界中的整数。先来补习1下小学的知识,整数的概念:正整数、零、负整数统称为整数。
依照有没有符号可以分为两种:1.有符号整数(正整数、零、负整数)2.无符号整数(正整数和零)
Swift提供了8,16,32和64位的有符号和无符号的整数类型,比如:8位无符号整数类型是UInt8,32位有符号整数类型Int32。
1.2 整型表示的范围
Swift中提供了min和max属性来访问不同整数类型的最小值和最大值,比如8位无符号/有符号整型表示的最大值最小值,如图:
1.3 Int类型
1般写代码的时候不需要专门制定整数类型的长度,Swift还提供了1个特殊的整数类型:Int,Int类型的长度取决于当前平台的系统位数:
在32位平台上Int类型就是32位,和Int32长度相同。
在64位平台上Int类型就是64位,和Int64长度相同。
1.4 UInt类型
UInt类型和Int类型1样,它的长度取决于当前平台的系统位数。
注意:
开发中尽可能不要使用UInt类型,最好使用Int,即便你要贮存的值就是非负数。可以提高代码的复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断。
2、浮点型
浮点数就是带有小数点的数字,比如常见的:3.14,0.618。Swift中提供了两种浮点数类型:
Float 表示32位浮点数。精度要求不高的话使用此类型。
Double表示64位浮点数。当需要贮存很大或很高精度的浮点数的时候才使用此类型。
注意:
Double的精度可以到达小数点后最少15位数字,而Float只有小数点后6位。1般来讲Float类型足够用。
3、类型安全和类型推断
Swift是1种类型安全(type safe)的语言。类型安全的语言可让你清除的知道代码要处理的值的类型。如果你的代码需要传递的参数是String类型,那末你绝对不可能不谨慎船进入1个非String类型。
由于Swift是类型安全的,所以它会在编译你的代码时进行类型检查(typy checks),并把不匹配的类型标记为毛病,这样可让你尽早的发现问题并修复。
当你要处理不同类型的值时,类型检查可以帮你避免毛病。但是你没必要每次声明常量、变量的时候都显示制定类型,如果没有制定类型,Swift会使用类型推断(type inference)帮你选择适合的类型。原理就是检查你的赋值便可。
虽然有类型推断,但是Swift很少需要自己显示声明类型,这些工作交给编译器去做就能够了。
例如:
声明1个没有标注类型的常量money,赋值998,Swift可以推断出常量的类型是Int,从下图控制台的信息可以得到论证:
如果你给变量、常量赋值了1个浮点类型的值,Swift会默许推断为Double类型,如图:
4、数值型字面量
1个整数的字面量可以被写成以下几种情势:
1个10进制数,没有前缀
1个2进制数,前缀是0b
1个8进制数,前缀是0o
1个106进制数,前缀是0x
比如:
浮点型字面量可以是10进制(没有前缀)或106进制(前缀是0x)。小数点两边必须有最少1个10进制数字(或是106进制的数字)。10进制浮点数也能够有1个可选的指数(exponent),通过大写或小写的e来制定,106进制浮点型数必须有1个指数,通过大写或小写的p来指定。
如果1个10进制数的指数为exp,那这个数相当于基数和10^exp的乘积:
1.25e2 表示1.25 × 10^2,等于125.0。
1.25e⑵表示1.25×10^⑵,等于0.0125。
如果1个106机制数的指数为exp,那这个数相当于基数和的2^exp的乘积:
0xFp2表示15×2^2,等于60.0.
0xFp⑵表示15×2^⑵,等于3.75。
下面的这些浮点字面量都等于10进制的12.1875:
数值类字面量可以包括额外的格式来增强可读性。整数和浮点数都可以添加额外的零并且包括下划线,其实不会影响字面量:
5、数值型类型转换
在开发的时候,如果没有明确说1定要声明无符号整型(要求优化性能、减少内存占用等),请使用系统默许的Int类型。由于系统默许整数类型的字面量默许的类型推断也是Int类型。
5.1 整数之间的转换
不同的整数类型存储的范围不同,可以通过max和min属性得到。Int类型可以存储的数值范围:⑴28~127,UInt类型存储的数值范围:0~255。如果超越了这个范围系统在编译的时候就会报错:
上边这两个毛病就是说:你存储的值溢出了当前这个类型所表示的范围。
如果想要两个不同整数类型的值进行操作的时候,必须要转化成相同的类型:
5.2整数和浮点数转换
整数和浮点数的转换必须显式指定类型:
浮点类型一样可以转换成整数类型:
注意:
数字类型的常量或变量进行运算,不同于数字字面量之间进行运算。数字字面量可以直接进行运算,比如3 + 0.1415,由于数字字面量本身没有肯定的类型,但是数字类型常量、变量是会被编译器推断出具体类型的,只有类型相同才能进行运算。
6、类型别名
类型别名(type aliases)就是给现有的类型定义1个新的名字。跟OC里边的typedef是类似。在Swift中你可使用typealias关键字来定义类型别名。平常在开发的时候偶尔也会用到但是不多。类型别名在苹果的Api里边大量的出现,特别是在1些地图类、音视频类等等的Api里边,常常会给现有类型起1个更成心义的别名。
比如:在GCD里边,如果想要某个线程延迟几秒履行,你得先定义1个延迟时间dispatch_time_t ,你点击进去查看Api就会发现其实它是UInt64类型:
下边自己定义1个类型别名:
欢迎大家关注”芒果iOS“微信公众账号,芒果会常常为大家分享好的技术文章: