加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中的数据类型

发布时间:2020-12-14 01:46:33 所属栏目:百科 来源:网络整理
导读:数据类型 swift 中常见的数据类型Int 、Float、Double、Character、String Array、Dictonary、元组类型(Tuple)、可选类型(Optional)可以看出,数据类型的首字母都是大写的 如何指定变量 常量的数据类型 在常量 变量名后面加上冒号(:)和类型名称let age:
数据类型 

swift 中常见的数据类型
Int 、Float、Double、Character、String 
Array、Dictonary、元组类型(Tuple)、可选类型(Optional)
可以看出,数据类型的首字母都是大写的 

如何指定变量 常量的数据类型 
在常量 变量名后面加上冒号(:)和类型名称
let age:Int = 10
上面代码表示:定义了一个Int类型的变量age 初始值是10

一般来说 没有必要明确指定变量 常量的类型 
如果在声明常量、变量时赋了初始值 Swift 以自动推断出这个常量、变量的类型
let age = 20

//Swift 会推断出age是Int类型 因为20是个整数 

变量初始化 
Swift严格要求变量在使用之前必须进行初始化 因为Swift是强类型 
而且是类型安全的语言 两个类型不一样是不能相加的
下面的写法是错误的 

var a:Int 
let c = a + 10 
第一行代码中:Swift并不会为变量a赋初值 a没有初始化
第二行代码会报错 
下面的代码是正确的 
var a:Int = 20
let c = a + 10

整数分为2种类型 
有符号(signed) 正 负 0
无符号(unsigned) 正 负 0

Swift提供了8、16、32、64位的有符号和无符号的整数 
比如
UInt8: 8位无符号整型
Int32: 32位有符号整型
Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64

最值
可以通过max 和min 属性来获取某个类型的最小值和最大值
let minValue = UInt8.min 
let maxValue = UInt8.max 

Int和UInt 
Swift 提供了特殊的有符号整型和无符号的整型 
IntUInt的长度和当前系统平台一样 
在32为系统平台上 Int和UInt 的长度是32位
在64为系统平台上 Int和UInt 的长度是64位

Int在32位系统平台的取值范围:-2147483648~2147483647
建议
在定义变量时 不要总考虑有符号 整数长度的问题 
尽量使用Int 这样可以保证代码的简洁性 和可复用
不会出现强制转换的代码 

存储范围 
每种数据类型都有自己的存储范围 
Int8存储的范围是:-128~127
UInt8的存储范围是:0~255

如果数值超出了存储范围 编译器就会直接报错
下面的语句会直接报错 
let num1:UInt8 = -1
let num2:Int8 = Int8.max + 1
第一行代码报错原因UInt8不能存储负数
第二行代码报错的原因Int8能存储的最大值是Int8,max

整数的表示形式
整数的4中表示形式
十进制:没有前缀 
let i1 = 10 //10

二进制:以0b为前缀
let i2 = 0b1010 //10

八进制:0o为前缀
let i3 = 0o12//10

十六进制:以0x为前缀
let i4 = 0xA //10

 

浮点数 
浮点数:就是小数 Swift提供了两种浮点类型 
Double:64位浮点数 当浮点值非常大或需要非常精确的使用此类型
Float: 32位浮点数 当浮点值不需要使用Double的时候使用此类型

精确程度 
Double 至少15位小数 
Float 至少6位小数 
如果没有明确说明类型 浮点数默认就是Double类型 
let num = 0.14 

浮点数的表示形式 
浮点数
可以使用十进制和十六进制2种进制来表示
十进制没有前缀

没有指数 let d1 = 12.5
有指数 let d2 = 0.125e2

十六进制(以0x为前缀且一定要有指数)
let d3 = 0xC.8p0
==0xC.8*2o==12.5*1
let d3 = 0xC.8p1 
== 12.5*2 ==25

数字格式 
数字可以增加额外的格式 使他们更容易阅读
可以增加额外的0 
let money = 001999 //1999
let money2 = 001999.000 //1999.0

可以增加额外的下划线_增强可读性 
1. let oneMillion1 = 1_000_000 //1000000
2. let oneMillion2 = 100_0000 // 1000000
3. let overOneMillon = 1_000_000.000_001//1000000.000001
增加了额外的0_ 并不会影响数值的大小

类型转换 

两个类型不的同的数值 是不能直接进行计算的 
下面的语句是错误的
let num1:Uint8 = 10
let num2:Int = 20
let sum:Int = num1 + num2
第3行会 报错
报错原因:num1是UInt8类型的,num2是类型Int 类型不同
将num1转化为Int类型 就能与num2进行相加 
下面的语句是正确的
let sum:Int = Int(num1) + num2

下面的语句是正确的 
let sum = 3 + 2.14
两者的相加结果是5.14 等赋值之后 编译器会自动推断出sum是Double 类型 

类型别名 
可以使用typealias关键字定义类型的别名 跟C 语言的typedef作用类似
  typealias MyInt = Int 
  //给Int类型起了个别名加做MyInt 
  原类型名称能用在什么地方 别名就可以用在什么地方
  声明变量、常量类型 
  let num:MyInt = 20
  获得类型的最值 
let minValue = MyInt.min 
类型转换
let num = MyInt(3.14)//3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读