swift的数据类型、运算符和元组的简单使用

来源:互联网 发布:数据库应用系统饭店 编辑:程序博客网 时间:2024/06/03 14:01

//: Playground - noun: a place where people can play


import UIKit


var str = "Hello, playground"

var str1 = "123"

//用加号做字符串的拼接

var des = str +str1

let hand = 2;

//var string = "我今年\(hand),\(hand)"

var int12 = String(hand)

//swift提供了2个打印输出函数

//println():输出内容后会自动换行

//print:对比println,少了个自动换行的功能

println("learn Swift")

let name ="swift 和OC + iOS\n"

println(name)


let age = 10

let = "mxj"

var name1 = "name" +

//command + Ctrol + space 弹出emoji键盘

let大笑 ="哈哈"

//swift严格要求变量在使用之前必须进行初始化


//数据类型 Int/Float/Double/Bool/Character/String/Array/Dictionary/元组类型(Tuple/可选类型(Optional),可以看出,数据类型的首字母都是大写的

//那么如何指定变量、常量的数据类型

//在常量、变量名后面加冒号和类型名称,如 let age: Int=10,但是在一般情况下没有必要明确指定变量或常量的类型,因为swift已经给你处理好了



//如: var a:Int,是错误的,swift并不会为变量赋初值

// var a:Int = 20是可以的

//UInt8.min

//UInt8.max  -128~127

//Int16.min  0~255

//Int16.max


//整数的4中表示形式

//十进制

let i10 = 10

//二进制0b为前缀

let i = 0b1010

//八进制 0o为前缀

let i1 = 0o12

//十六进制 0x前缀

let i2 = 0x0A



//浮点数 

/*

Double:64位浮点数,当浮点值非常大或需要非常精确时使用此类型

Float:32为浮点数,当浮点值不需要使用Double的时候使用此类型

*/

let fff  = 3.14

let ddd = 3.56

//注意如果没有明确类型,默认为Double类型

//浮点数可以用十进制和十六进制来表示

//十进制

//let d1 = 12.5

//let d2 = 0.125e2    0.125*10*10

let d3 = 0xc.8p0 //12+ 8/16 = 12.5


//数字格式

let money = 001999

//增加额外的下划线

let money1 = 100_0000


//类型转换,两个类型不同的数值,是不能进行运算的



//类型的别名

//可以使用typedef作用类似于

typealias myInt = Int



//运算符

/*

Swift所支持的部分运算符有

赋值运算符:=

复合赋值运算符:+=-=

算术运算符:+-*/

求余运算符:%

自增、自减运算符:++--

比较运算符:==、!=><>=<=

逻辑运算符:&&||、!

三目运算符:?

范围运算符:..<...

溢出运算符:&+&-&*&/&%


swift中的赋值运算符:

1  11赋值   

      var a = 5

2NN赋值,成为元组

let (a,b) = (1,2) --->a=1,b=2

C/OC中不同的是,swift没有返回值,从而保证数据安全

OC  

int a=1,b=5;

if(a=b){

...

}

swift中会报错


求余运算符   %

9%4 = 1, -9%4 = -1,9% -4 = 1,-9 %-4 = -1

求余结果的正负跟%左边数值的正负一致,另外,swift还支持浮点数的求余运算

8%2.5 = 0.5


bool类型,也成为逻辑类型,就2中值,true:真,false:假

C语言中,0为假,非0即真;而在swift中没有这种概念

if(10){

...

}

这在swift中是错误的

if(true){

...

}


比较运算符、逻辑运算符返回的是bool值,取值为2种可能

true:真,6>5,

false:假,6<5

三目运算符的条件必须是bool类型的值

错误写法:

let a= 10    ; let c=a?100:200

正确写法:

let c=a !=0?100:200

let c=false?100:200


重点:*******************************************

范围运算符,表示一个范围,有2种类型的范围运算符

1、闭合范围运算符:a...b,表示[a,b]

2、半闭合范围运算符:a..<b,表示[a,b)


溢出运算符

每种数据类型都有自己的取值范围,默认情况下,一旦赋值超出了一个超出范围的数值,会产生编译或运行时的错误

比如

  下面的写法是错误的

    let x = UInt8.max

    let   y = x +1

第二行代码会在运行时报错

swift为整型计算提供了5&开头的溢出运算符,能对超出范围的数值进行灵活处理

溢出加法&+&-&*&/&%

let x = UInt8.max     255

let y = x &+1

let m = UInt8.min

let z = x &-1

第一行代码过后:x的值为255(最大值)

第二行的代码过后:y = 0

第四行的代码过后:z = 255

默认情况下,一个数除以0,或者对0求余数,编译器会报错

但是如果使用溢出运算符,就不会报错

let x = 10

let y = x&/0

let z = x&%0

yz的值始终是0


元组类型  Swift的特有类型)

N个任意类型的数据组成的,N>=0

组成元组类型的数据可以成为元素

 let position = (x:10.5,y:20)

 position2个元素,xy是元素的名称

let person = (name:"jack")

person只有name一个元素

let data = (),空元组


元素的访问

var point = (x:10,y:20)

point.x = 30 -->(x:30,y:20)

point.y

point.0 = 20 -->(x:20,y:20)

point.1

注意,如果用let来定义一个元组,那么就是常量,就无法修改它的元素

使用细节:可以省略元素的名称

let position = (10,20)

let position = (20,"jack")


比如

var point = (10,20)

point.0 = "23243253",会报错


var p = (20,"jack")

p.1 = "jackd"

可以明确指定元素的类型

var person :(Int,String) = (20,"sdfsfs")

注意在明确指定元素类型的情况下不能加上元素的名称

因此,下面的语句是错误的

var person :(Int,String) = (age:20,name:"rose")


元组的使用细节:

1、可以用多个变量接收元组数据

var (x,y) = (10,20)

var point = (x,y)     //point2个元素组成,分别是1020

2、可以将元素分别赋值个多个变量

var point = (10,20)

var (x,y) = point      //x10y20

3、可用下划线_忽略某个元素的值,取出其他元素的值

var person = (20,"Jack")

var (_,name) = person

//name的内容是"Jack",person中的元素20被忽略


*/












0 0