#从零开始学Swift2.0# No.3 基本数据类型
我的博客地址: sunquan.club
常量和变量的定义
在Swift中定义常量使用 let 关键字, 定义变量使用 var 关键字.
相信大家对var并不陌生, 如早期的VB, js等都会有这样的定义. 但Swift对常量和变量的声明和编译更加精确, 有时候用户可以不需要声明常量的类型, 像通常声明一个变量" int b = 0; ", 在Swift中使用" var b = 0; "即可. Swift可根据初始化的值进行判数据类型,如果声明中没有指定足够的信息可以使用" : " + 数据类型进行加以说明.
常量的声明:
变量的声明:
Swift变量不支持隐式转换类型 必须显式转换.
Swift常量和变量命名几乎支持所有Unicode编码. 不过需要注意以下几点:
1. 不能使用系统保留字, 如果一定要使用保留字, 可加`保留字`命名
2. 不能以数字开头
3. 不能使用数字符号命名
4. 不能使用横线箭头命名
在Swift2.0中, println()和print()被合并为一个print(), 之前的println方法都会报错.
Swift1.2中输出语句:
func print(<stuff to print>)
func println(<stuff to print>)
Swift2.0中输出语句:
func print(<stuff to print>, appendNewline : Bool = true)
基本数据类型
Swift中基本数据类型可以分为整型 Int, 浮点型 Float 和 Double, 布尔型 Bool, 字符串 String等.
整型
Int类型
一般来说, 编程人员在写代码时不需要选择整型的位数, Swift提供了一种额外的整型Int, 是和当前机器环境的字长相同的整型位数.
1. 在32位机器上, Int 和 Int32 一样大小.
2. 在64位机器上, Int 和 Int64 一样大小.
除非确实需要使用特定字长, 建议尽量使用Int, 以保证代码的可移植性. 即使在32位的平台上,Int也可以存储 -2,147,483,648 到 2,147,483,647 范围内的值, 这对大部分来讲已经足够了.
UInt类型
Swift还提供了一种无符号类型UInt, 同理也是和当前机器环境的字长相等.
1. 在32位机器上, UInt 和 UInt32 一样大小.
2. 在64位机器上, UInt 和 UInt64 一样大小.
注 : 只有显式的需要指定一个长度跟机器字长相等的无符号数的时候才需要使用 UInt, 其他的情况, 尽量使用 Int, 即使这个变量确定是无符号的. 都使用 Int保证了代码的可移植性, 避免了不同数字类型之间的转换. 详见Type Safety and Type Inference.
浮点型
浮点型就是像 3.14159, 0.1, -273.15 这样带小数的数字. 浮点型可以表达比整型范围更广的数值. swift支持两种带符号浮点数类型:
1. Double类型能表示64位的有符号浮点型. 当需要表示的数字非常大或者精度要求非常高的时候可以使用Double类型.
2. Float类型能表示32位的有符号浮点型. 当需要表达的数字不需要64位精度的时候可以使用Float类型.
注 : Double 至少有15位小数, Float至少有6位小数. 合适的浮点型小数位数取决于代码里需要处理的浮点数范围.
布尔型
Swift中的布尔类型使用Bool定义, 也被称为Logical(逻辑)类型, 可选值是 true 和 false :
字符串类型
之前在论坛上看到一张图片, 图片的内容是比较几种字符串串接语句长度, 相对于其他语言, Objective - C编写的这个语句的长度都着实是让人蛋疼的. 在Objective - C中想要在NSString *a = "hello" 后串接 " world", 常常使用[ stringbyappendstring ] , 或[ stringWithFormat:"%@,%@" ]这两个方法来串接. 而不能使用" + "运算符. 对于C, C++, Java甚至更多高级语言都是支持" + "号运算符的. 唯有Objective - C特别, 搞得我一个同事说, 想学习一下iOS, 但语言太另类了, 其实啥语言都大差不差, 习惯就好了. 现在好了, Swift来了, 我们也可以使用" + "了.
Swift中可以使用isEmpty方法来判断字符串是否为空.
Swift中单个字符的声明用Character关键字, 通过使用for-in循环可以遍历字符串中的每一个字符.
判断字符串的长度不再使用Objective - C 中的length方法, 而是改为计算字符串中字符的个数, 即使用.characters.count .
在Swift中字符串的比较也从Objective - C 中的 isEqualToString 方法简化为 " == ".
Swift保留了Objective - C中的hasPrefix 和hasSuffix方法来判断字符串的前后缀.
Swift字符串的大小写转化使用uppercaseString和lowercaseString者两个方法.
String的其他方法就不在这里赘述了.
类型别名
类型别名为现有类型定义的可替代名称. 你可以使用typealias关键字定义类型别名. 类型别名可以帮助使用更符合上下文语境的名字来指代一个已存在的类型. 一旦定义了一个类型别名, 可以在任何可能使用原来的名称地方使用别名.