Swift 5.X——数据类型

  使用任何编程语言都须要用到数据类型,数据类型决定了如何将表明这些值的位存储到计算机的中。java

1.Int

  Swift 提供了特殊的整数类型Int,长度与当前平台的原生字长相同:在32位平台上,IntInt32长度相同。在64位平台上,IntInt64长度相同。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。swift

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”