零基础学习swift

swift基础学习篇(二)数据类型

类型类型名
Int整形
UInt无符号整形
Double浮点型
Float浮点型
Bool布尔类型
String字符串
Array数组
Dictionary子典

整数

整数就是没有小数部分的数字(23,-23)。整数可以是有符号(正、负、零)或者无符号(正、零)。

   Swift 提供了8,16,32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如8位无符号整数类型是UInt8,32位有符号整数类型是Int32。就像 Swift 的其他类型一样,整数类型采用大写命名法。

整数范围

  let minValue = UInt8.min  //值是0,所以UInt8的最小值为0
  let maxValue = UInt8.max //值是255,所以UInt8的最大值为255
Int
它是由Swift 提供的一个特殊的整数类型,长度与当前平台的原生字长相同:
•   在32位平台上,Int和Int32长度相同。
•   在64位平台上,Int和Int64长度相同。
注:若没有特定的长度要求,用Int足以。这样可以提高代码的一致性和复用性
UInt
 Swift 也提供了一个特殊的***无符号***类型UInt,长度与当前平台的原生字长相同:
•   在32位平台上,UInt和UInt32长度相同。
•   在64位平台上,UInt和UInt64长度相同。
注:尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int,即使你要存储的值已知是非负的。统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推测,请参考类型安全和类型推测。

浮点数

浮点数是有小数部分的数字,比如3.14159,0.1和-273.15。

   浮点类型比整数类型表示的范围更大,可以存储比Int类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:
•   Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。(精确度很高,至少有15位数字)
•   Float表示32位浮点数。精度要求不高的话可以使用此类型。(至少只有6位数字)

类型安全和类型推测

Swift 是一个类型安全(type safe )的语言。由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。

如果你没有显式指定类型,Swift 会使用类型推测(type inference)来选择合适的类型。有了类型推测,编译器可以在编译代码的时候自动推测出表达式的类型。原理很简单,只要检查你赋的值即可。

 例如,
let meaningOfLife = 42 // meaningOfLife 会被推测为 Int 类型 
let pi = 3.14159 // pi 会被推测为 Double 类型 
let anotherPi = 3 + 0.14159 // anotherPi 会被推测为 Double 类型 
注:原始值3没有显式声明类型,而表达式中出现了一个浮点字面量,所以表达式会被推测为Double类型。

数值型字面量

整数字面量可以被写作:
• 一个十进制数,没有前缀
• 一个二进制数,前缀是0b
• 一个八进制数,前缀是0o
• 一个十六进制数,前缀是0x

 例:
    let decimalInteger = 17
    let binaryInteger = 0b10001 // 二进制的17
    let octalInteger = 0o21 // 八进制的17
    let hexadecimalInteger = 0x11 // 十六进制的17 

数值型类型转换

整数转换

    在下面的例子中,常量twoThousand是UInt16类型,然而常量one是Uint8类型。它们不能直接相加,因为它们类型不同。所以要调用UInt16(one)来创建一个新的UInt16数字并用one的值来初始化,然后使用这个新数字来计算:
    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
// pi 等于 3.14159,所以被推测为 Double 类型 

浮点数到整数的反向转换同样行,整数类型可以用Double或者Float类型来初始化:

let integerPi = Int(pi) // integerPi 等于 3,所以被推测为 Int 类型 
当用这种方式来初始化一个新的整数值时,浮点值会被截断。也就是说4.75会变成4,-3.9会变成-3。
注意:结合数字类常量和变量不同于结合数字类字面量。字面量3可以直接和字面量0.14159相加,因为数字字面量本身没有明确的类型。它们的类型只在编译器需要求值的时候被推测。

布尔值

Swift 有一个基本的布尔(Boolean)类型,叫做Bool。布尔值指逻辑上的(logical),因为它们只能是真或者假。Swift 有两个布尔常量,true和false:

    let orangesAreOrange = true
    let turnipsAreDelicious = false 

当你编写条件语句比如if语句的时候,布尔值非常有用:

    if turnipsAreDelicious {
        println("Mmm, tasty turnips!")
    } else {
    println("Eww, turnips are horrible.")
}
    // 输出 "Eww, turnips are horrible." 

如果你在需要使用Bool类型的地方使用了非布尔值,Swift 的类型安全机制会报错。下面的例子会报告一个编译时错误:

let i = 1 if i { // 这个例子不会通过编译,会报错 } 
然而,下面的例子是合法的:
let i = 1 if i == 1 { // 这个例子会编译成功 } 
i == 1的比较结果是Bool类型,所以第二个例子可以通过类型检查。类似i == 1这样的比较
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值