虽然编写任何编程语言,需要使用不同的变量来存储各种信息。变量不过是保留的内存位置来存储值。这意味着,当创建一个变量,在内存中会保留一些空间。
可能喜欢像存储字符串,字符,宽字符,整数,浮点数,布尔等各种数据类型的信息。根据一个变量的数据类型,操作系统分配内存,并决定什么可以存储保留在存储器。
内置数据类型
Swift 为程序员提供内置以及用户定义的种类数据类型。 以下是声明变量使用最频繁的基本数据类型的列表:
Int 或 UInt - 这是用于整数。更具体地可以使用Int32,Int64来定义32或64位有符号整数,其中作为UInt32或UInt64用来定义32或64位无符号整数的变量。 For example, 42 and -23.
有下列有关整数类型要点:
UInt8, UInt16, UInt32 和 UInt64 可以用来表示 8 Bit, 16 Bit, 32 Bit 和 64 Bit 形成无符号整数。
绑定值
下表显示变量类型,需要多少内存存储此值在存储器中,在这种类型的变量可以存储最大值和最小值。
类型别名
可以从现有类型使用typealias创建一个新的名称。以下是使用简单 typealias 的语法来定义新类型:
typealias newname = type
typealias Feet = Int
import Cocoatypealias Feet = Int var distance: Feet = 100 println(distance)
100
类型安全
Swift 是一种安全的语言,这意味着,如果代码的一部分需要一个字符串, 那么不能错误地传递一个int。
由于 Swift 是类型安全的,当类型检查时它执行编译代码并标志类型不匹配的错误。
import Cocoavar varA = 42 varA = "This is hello" println(varA)
Playground execution failed: error: :6:6: error: cannot assign to 'let' value 'varA' varA = "This is hello"
import Cocoa// varA is inferred to be of type Int var varA = 42 println(varA)
// varB is inferred to be of type Double var varB = 3.14159 println(varB)
// varC is also inferred to be of type Double var varC = 3 + 0.14159 println(varC)
42 3.14159 3.14159
Swift数字类型之间的转换
Swift数字类型之间的转换Swift是一种安全的语言,对于类型的检查非常严格,不同类型之间不能随便转换。
一、整型之间的转换
在C和Objective-C等其他语言中,整型之间有两种转换方法:
从小范围数到大范围数转换是自动的;
从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。
而在Swift中这两种方法是行不通的,我们需要通过一些函数进行显式地转换,代码如下:
let historyScore:UInt8 = 90let englishScore:UInt16 = 130
let totalScore = historyScore + englishScore //错误 ①
let totalScore = UInt16(historyScore) + englishScore //正确 ②
let totalScore = historyScore + UInt8(englishScore) //正确 ③
上述代码声明和初始化了两个常量historyScore和englishScore,我们把它们相加赋值给totalScore。如果采用第①行代码实现相加,程序就会有编译错误,原因是historyScore是UInt8类型,而englishScore是UInt16类型,它们之间不能转换。
我们有两种转换方法。
一种是把UInt8的historyScore转换为UInt16类型。由于是从小范围数转换为大范围数,这种转换是安全的。代码第②行UInt16(historyScore)就是正确的转换方法。
另外一种是把UInt16的englishScore转换为UInt8类型。由于是从大范围数转换为小范围数,这种转换是不安全的,如果转换的数比较大会造成精度的丢失。代码第③行UInt8(englishScore)是正确的转换方法。由于本例中englishScore的值是130,这个转换是成功的,如果把这个数修改为1300,虽然程序编译没有问题,但是会在控制台中输出异常信息,这是运行期异常。
上述代码中,UInt16(historyScore)和UInt8(englishScore)事实上是构造器,能够创建并初始化另外一个类型。二、整型与浮点型之间的转换
整型与浮点型之间的转换与整型之间的转换类似,因此我们将上一节的示例修改如下:
let historyScore:Float = 90.6 ①let englishScore:UInt16 = 130 ②
let totalScore = historyScore + englishScore //错误 ③
let totalScore = historyScore + Float(englishScore) //正确,安全 ④
let totalScore = UInt16(historyScore) + englishScore //正确,小数被截掉 ⑤
问题内容: 我刚刚注意到,Swift在Int和Double上做了一些类型转换。当我尝试评估 是预期的,但实际上是。有人可以解释一下吗? 问题答案: 是的,我也发现这很令人惊讶。同时符合and (和Swift 3)。因此,可以使用 浮点文字 初始化a __ 或使用 整数文字 : (对于其他浮点类型(例如和 )也是如此。) 现在,对于我们所有人而言,(客观)C背景这两个语句可能都出乎了意料之外 将值分
语言中经常会出现类型转换1。如将一个数字字符串转为整型,或浮点数。这种转换常常分为,隐式转换和显式转换。 隐式转换 如果运算符支持两边不同的类型,编译器会尝试隐式转换类型,同理,赋值时也是类似。通常,隐式转换需要能保证不会丢失数据,且语义可通。如uint8可以转化为uint16,uint256。但int8不能转为uint256,因为uint256不能表示-1。 此外,任何无符号整数,可以转换为相同
Python 中基本数据类型转换的方法有下面几个。 方法 说明 int(x [,base ]) 将x转换为一个整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符串 eval(str ) 用来计算在字符串中的有效 Python 表达式,并返回一个对象 tu
主要内容:定义类层次结构,类型检查,向下转换在Swift 4语言中类型转换用于检查实例类型是属于特定的超类还是子类,还是在自己的层次结构中定义。 Swift 4类型转换提供两个运算符和来检查值的类型,并将类型值转换为不同的类型。 类型转换还检查实例类型是否遵循特定的协议一致性标准。 定义类层次结构 类型转换用于检查实例的类型,以确定它是否属于特定的类类型。 此外,它还检查类及其子类的层次结构,以检查并转换这些实例,使其成为同一层次结构。 当
Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或者子类的实例。 Swift 中类型转换使用 is 和 as 操作符实现,is 用于检测值的类型,as 用于转换类型。 类型转换也可以用来检查一个类是否实现了某个协议。 定义一个类层次 以下定义了三个类:Subjects、Chemistry、Maths,Chemistry 和 Maths 继承了 Subjects。 代
本文向大家介绍详解SpringMVC的类型转换及验证方法,包括了详解SpringMVC的类型转换及验证方法的使用技巧和注意事项,需要的朋友参考一下 Spring mvc 数据绑定流程: SpringMvc将ServletRequest对象及目标方法的形参实例传给WebDataBinderFactory实例,以创建DataBinder实例对象。DataBinder调用装配在SpringMvc上下文中