Swift3.0教程(二)-基本数据类型

整形

整形是指不包括小数的数字类型,包括有符号数和无符号数,比如32,-20都是整形。swift提供了8位,16位,32位和64位的有符号和无符号的整数。他们的命名和C语言差不多,UInt8是无符号8位整形,32位有符号整形是Int32等等,每一个整形都有特定的名字。

整数边界

整数都有一个最大值和最小值,可以通过minmax属性获取最大值和最小值。

let minValue = UInt8.min  // 最小值 0
let maxValue = UInt8.max  // 最大值是255

Int

大多数情况下,我们在使用的时候直接使用Int类型就好了,Int的大小和当前操作系统有关,如果是32位的操作系统,它的位数和Int32一样,如果是64位的操作系统,它的位数和Int64一样。所以我们在使用的时候直接使用Int就好。

UInt

同样,如果是无符号类型,直接使用UInt就好,UInt的大小也是和当前操作系统有关,如果是32位的操作系统,它的位数和UInt32一样,如果是64位的操作系统,它的位数和UInt64一样。

浮点型

比起整数,浮点数有更高的精度,所以它可以存储比Int更多的数。Swift里面提供的浮点数主要有以下两个。32位浮点数的的使用Float,64位浮点数的使用Double

类型安全和类型推断

Swift是一个类型安全语言,类型安全语言鼓励开发者把变量或是常量的类型写的清晰名了。比如一个String的类型,开发者不应该传递一个Int类型。其实Xcode会自定进行类型检查,如果类型不相符会给出错误提示。
不过如果开发者没有给变量或是常量定义具体的类型。系统会根据赋值数据进行类型推断。

let name = "dog"

系统会自动推断出name的类型为String

let myInt = 30

系统可以推断出myInt类型为整形。
如果使用了一个表达式,系统也可以自动推断出类型来,比如。

let pi = 3 + 0.14159

系统推断pi为Double

进制

  • 十进制数不需要加前缀
  • 二进制数以0b为前缀
  • 八进制数以0o为前缀
  • 十六进制数以0x为前缀
let decimalInteger = 17
let binaryInteger = 0b10001       // 17 的二进制
let octalInteger = 0o21           // 17 八进制
let hexadecimalInteger = 0x11     // 17 十六进制

幂运算,十次方使用e

1.25e2=1.25102

幂运算,二次方使用 p
0xFp2=1522=60

为了数字看起来易读可以使用_标注数字.官方文档示例如下

let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1

类型转换

在使用整形类型的时候,需要注意的是不能出现使用无符号整型存储负数或是存储大于或小于类型临界值的情况。比如

//使用无符号整形存储负数将会报错
let cannotBeNegative: UInt8 = -1
//存储大于或小于类型值的数就会报错
let tooBig: Int8 = Int8.max + 1
let tooSmall: Int8 = Int8.min - 1

两个类型不同的变量或是常量都是不能叠加的,必须把他们转化到相同的数据类型。

let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousandAndOne = twoThousand + UInt16(one)

整形转化为浮点型也是非常容易的。

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

总结:不同类型不能相加,需要类型转化。转化用类型(待转化的数据)这样的格式即可。

类型别名

类型别名就是给类型起一个新的名字,使用的时候使用自己定义的别名即可。类型所能使用的东西别名都可使用,比如类型所能存储的最小值。

typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min

布耳型

定义一个基本的布尔类型很容易。

let zeroIsZero = true
let zeroIsOne = false

不过因为swift语言是安全的语言,所以语法比起OC规范了很多,在OC里面可以直接把数字或是0赋值给布耳型。这在swift里是不允许的。下面的写法是错误。

let isOne = 1
if  isOne {

}

不过在if里进行值的比较是允许的。

let isOne = 1
if  isOne == 1 {

}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...