使用任何编程语言都需要用到数据类型,数据类型决定了如何将代表这些值的位存储到计算机的中。
1.Int
Swift 提供了特殊的整数类型Int
,长度与当前平台的原生字长相同:在32位平台上,Int
和Int32
长度相同。在64位平台上,Int
和Int64
长度相同。Int8, Int16, Int32, Int64 分别表示 8 位, 16 位, 32 位, 和 64 位的有符号整数形式。另外的,Swift 也提供了一个特殊的无符号类型UInt,但
尽量不要使用UInt。
1.1.类型的定义
import UIKit
var a:Int = 1//整数类型的定义(变量)
let b:Int = 2//整数类型的定义(常量)
1.2.类型的范围
import UIKit
print(Int8.min,Int8.max)//-128 127
print(Int16.min,Int16.max)//-32768 32767
print(Int32.min,Int32.max)//-2147483648 2147483647
print(Int64.min,Int64.max)//-9223372036854775808 9223372036854775807
print(Int.min,Int.max)//-9223372036854775808 9223372036854775807
2.Float
2.1.类型的定义
import UIKit
var a:Float = 1.2
let b:Float = 1.5
3.Double
4.Character和String
4.1.类型的定义
import UIKit
var a:Character = "a"//Character
var b:String = "a"//String
var c = "a"//String
//var d:Character = "ab"-error
var e:String = "ab"//String
var f = "ab"//String
var g:Character = "我"//Character
var h:String = "我"//String
var i = "我"//String
//var j:Character = "我是"-error
var k:String = "我是"//String
var l = "我是"//String
以下是java语言的情况
public class Main {
public static void main(String[] args) {
char a='a';
String b="a";
System.out.println(getType(a));//class java.lang.Character
System.out.println(getType(b));//class java.lang.String
//char c='ab';-error
String d="ab";
System.out.println(getType(d));//class java.lang.String
char e='我';
//String b="我";-error
System.out.println(getType(e));//class java.lang.Character
//char f='我是';-error
String g="我是";
System.out.println(getType(g));//class java.lang.String
}
public static String getType(Object o){
return o.getClass().toString();
}
}
5.布尔型
import UIKit
var a:Bool = true
var b = false//类型判断:根据内容判断数据类型
6.可选类型
import UIKit
var a:Int? = 10
if (a==nil) {//nil类似于java中的null
print("a为空")
}else{
print("a=\(a!)")//字符串拼接
}
//输出:a=10
print(a)//Optional(10)
print(a!)//10。强制取值
6.1.可选项绑定
作用:可使用可选项绑定来判断可选项是否包含值:如果包含值就自动解包,把值赋给一个临时变量或常量并返回true;否则返回false。需要注意的是guard也可以取代if-else做可选项绑定,但guard(见:注意事项)是苹果特有且反人类的,不推荐使用。
import UIKit
var a:Int? = 10//定义可选型变量
if let value = a {//如果a有值,就把a的值给常量value
print("value的值为:\(value)")//value的值为:10
}else{
print("value没有值")
}
print(a)//Optional(10)
print(a!)//10
6.2.隐式展开
import UIKit
var a:Int! = 10//定义了一个变量
a=nil//在计算过程中b成了nil
print(a)//nil。依然可以输出
var b:Int = 10
//b=nil——error
7.元组类型
元组就是不同数据类型的封装,关系型数据库中“记录”的另一个学术性名称是“元组”,一条记录就是一个元组。
7.1.元组的初始化(方法一)
import UIKit
var a = (1,1.2,"hello","a",true)
var b = a//元组的赋值,传的是真实的值,不是引用
print(a.0,a.1,a.2,a.3,a.4)//逐个打印
a.0=10//修改元素
print(a.0,a.1,a.2,a.3,a.4)//逐个打印
7.2.元组的初始化(方法二)
import UIKit
var a:(Int,Double,String,Character,Bool) = (1,1.2,"hello","a",true)
7.3.元组的初始化(方法三)
import UIKit
var a = (name1:"hello",name2:true)
print(a.name1,a.name2)//hello true
7.4.元组的初始化(方法四)
import UIKit
var a:(name1:String,name2:Bool) = ("hello",true)
print(a.name1,a.name2)//hello true
7.5.元组的初始化(方法五)
import UIKit
var (name1,_,name3) = ("hello",10,"world")
print(name1,name3)//hello world
7.6.特殊情况
import UIKit
var a = ()//警告
//var b:(Int) = ()——error
7.7.元组比较
import UIKit
var a = (1,1.2,"hello","a",true)
var b = (1,1.2,"hello","a",true)
var c = (1,1.1,"hello","a",true)
print(a==b)//true
print(a==c)//false
8.类型别名
import UIKit
typealias dog = Int
var a:dog = 1//Int->dog
9.类型转换
import UIKit
var a:Int = 10
print(String(10))//10
var b:String = "hello"
print(Int(b))//nil(类似于:null)。因为字符串转为Int不一定成功,所以发出警告
print(Int(b) ?? 100)//100。“??”类似于java中的“||”,具有“短路”作用,前面成功则不执行后面;否则执行
print(Double(true),Double(false))//1.0 0.0
print(Bool(0),Bool(1),Bool(2.2))//true。“0”为“false”,其余都是“true”