整数
Int
的长度为当前平台的原生字长相同,可以用Int.max,Int.min
来取其最大值和最小值
64位的长度范围是: max : 9223372036854775807, min : -9223372036854775808
Int8
长度范围:max : 127, min : -128
Int16
长度范围max : 32767, min : -32768
Int32
长度范围 max : 2147483647, min : -2147483648
Int64
长度范围 max : 9223372036854775807, min : -9223372036854775808
UInt
无符号整数,长度业余当前平台原生字节长相同
64位长度范围是: max : 18446744073709551615, min : 0
UInt8
长度范围:max : 255, min : 0
UInt16
长度范围max : 65535, min : 0
UInt32
长度范围 max : 4294967295, min : 0
UInt64
长度范围 max : 18446744073709551615, min : 0
浮点数
Float
是32位的浮点数,小数点后6位,也可以写作Float32
.
Double
是64位的浮点数,小数后15位,写可以写作Float64
.
进制
十进制:无前缀.
二进制:0b
.
八进制:0o
十六进制:0x
布尔值
类型: Bool
, true
为真, false
为假
字符Character
只有指定声明的变量与常量才会可以指定为 Character
型,而类型推测会一直是 String
和 NSString
String与NSString
Swift
的String
是一个值类型,是一个结构体,而NSString
是一个类,创建出来的是一个对象,有本质的不同.
计算字符的数量
字符串.characters.count
得到的是Unicode的数量
转义字符
转义字符用\字符
来表示特定的含义,如\n
是换行.
\n
换行
\0
空字符
\\
斜线
\'
单引号
\"
双引号
\r
回车符
\t
水平制表符
\xnn
单字节Unicode 二位十六进制数
\unnnn
双字节Unicode 四位十六进制数
\Unnnnnnnn
四字节Unicode 八位十六进制数
元祖
元祖(tuples)简单来讲就是把多个值放到一个集合中组成复合值,这个集合里可以有多种类型
// 三种写法之一
let dog = ("小白",18);
// 三种写法之二
let (dogName,dogAge) = ("大黄",2)
// 三种写法之三
let dog2 = (name:"旺财",age:3)
//打印
print(dog)
print("\(dogName)年龄\(dogAge)")
print("\(dog2.name)年龄\(dog2.age)")
类型转换
类型转换 由构造器来控制如 :
extension Int64 {
public init(_ v: UInt8)
public init(_ v: Int8)
public init(_ v: UInt16)
public init(_ v: Int16)
public init(_ v: UInt32)
public init(_ v: Int32)
public init(_ v: UInt64)
public init(_ v: UInt)
public init(_ v: Int)
/// Construct a `Int64` having the same memory representation as
/// the `UInt64` `bitPattern`. No range or overflow checking
/// occurs, and the resulting `Int64` may not have the same numeric
/// value as `bitPattern`--it is only guaranteed to use the same
/// pattern of bits.
public init(bitPattern: UInt64)
}
使用:Int64( 转换的变量或者常量 )
类型别名:
typealias
关键字来定义别名,列子:
typealias Myview = UIView;
可选(optionals):
?
表示是一个可选值 let name: String ?
而!
表示明确知道这个值不是一个空值name!
,请再使用!
之前确定有值不然会程序会出错.
断言
assert
关键字,这个关键字可以在调试的时候指定符合条件的情况下中断程序的执行,并且可以用assert(条件表达式,调试语句)
的形式来执行Log信息
"_"符号
如果你声明的变量值没有在程序中使用往往Xcode会提示你的变量名称变为_
省略的意思,在元祖中也可以let (dogName,_) = ("大黄",2)
来省略不需要的值.
"hashValue"
可以得到对应的hash值,用法3.hashValue
在swift中大部分对象,结构体枚举值,都可以点出hashValue
甚至可以view.hashValue
.
"is"
左边 is 右边 : 左边是否是右边的实例对象或者是右边子类的实例对象.返回的是一个BOOL值
运算符
赋值运算符
=
区别于oc的是 if var obj = 3
在oc中可以 oc不是0就是真 不是nil
也是真但是swift
不行if
后必须是一个条件表达式
数值运算符
+,-,*,/,%
基本和OC一样但是%
这个运算符可以计算小数
一元正负运算符
一元运算符的正负号+
, -
代表正数 负数.
自增自减运算符,复合运算符
自增自减运算符++
,--
复合运算符 +=
,-=
注: +=
不止可以用于数值,也可以用于拼接字符串和添加数组元素
比较运算符
==,!=,>,<,>=,<=
为比较运算符,与OC基本一致
另外加入的是 === ,!==
来判断2个指针变量是否引用一个内存地址.
三元运算符
格式: 条件表达式 ? 条件1 : 条件2
, 例子a > b ? a:b;
逻辑运算符
!
, &&
,||
,逻辑运算符也与OC基本一致
区间运算符
...
区间运算符,包含了在左右2端所有的数, 如3...5
那么就包含 3,4,5
3个数字.
..
半区间,相比全区间只少了最后1个数字如上面例子3..5
只包含了3,4
2个数字.
位运算符
~
按位取反运算符
&
按位与运算符
|
按位或运算符
^
按位异或运算符
<<
>>
左移右移运算符
溢出运算符
&+
&-
&*
&/
&%
在值的取值范围超出后做溢出处理
运算符函数
关键字 func + (形参: 形参类型, 形参,形参类型 )->返回值类型
字符型表达式
__FUNCTION__
打印出所在的函数名 String
型
__FILE__
打印出在哪个文件中 String
型
__LINE__
打印出所在的行数 Int
型
__COLUMN__
打印出所在的列数 Int
型