Swift与OC的语法简单对⽐(常⽤语法⼀)01-常量与变量
学习swift第⼀步打印Hello World
print("Hello World")
swift是不⽤加分号的
什么是常量?
常量是在程序运⾏过程中不能改变值的量
什么时变量?
变量是可以在程序运⾏过程中不断变化的量
在swift当中常量和变量必须在使⽤前声明
⽤let来声明常量,⽤var来声明变量
常量定义⽅式:
可以⽤任何你喜欢的字符作为常量和变量名,包括Unicode字符
常量与变量名不能包含以下:
数学符号,箭头,保留的(或者⾮法的)Unicode码位,连线与制表符。
也不能以数字开头,但是可以在常量与变量名的其他地⽅包含数字。
注意:Swift中的常量必须在定义时初始化(OC可以不初始化),否则会报错
letmax=10
let =100
变量定义⽅式:
在OC当中先定义再初始化————>(以下为OC写法)
intage;
age =10;
也可以定义的同时初始化
intage =10;
在swift当中先定义再初始化:
varage 这种写法会直接报错.
报错原因:(type annotation missing in pattern:没有指定数据类型)在Swift中如果想要先定义⼀个变量,
以后使⽤时再初始化必须在定义时告诉编译器变量的类型(类型标注)写法为:
varage:Int
age = 20
定义的同时初始化:
在Swift中如果定义的同时初始化⼀个变量,可以不⽤写数据类型
编译期会根据初始化的值⾃动推断出变量的类型(类型推断机制) varage:Int=20
varage =20
02-基本数据类型
基本数据类型
OC:
整型int intValue = 10;
浮点型double doubleValue = 10.10; float floatValue = 5.1;
长long
短short
有符号signed
⽆符号unsigned
各种类型的数据的取值范围在不同位的编译器下取值范围不同
Swift:注意关键字⼤写
整型
varintValue:Int=10
浮点型
varintValue1:Double=10.10表⽰64位浮点数
varintValue2:Float=9.9表⽰32位浮点数
如果按照长度划分,Swift中的长短⽐OC更加精确
varintValue3:Int8=6
varintValue4:Int16=7
varintValue5:Int32=8
varintValue6:Int64=9
有符号⽆符号,默认是有符号的(UInt8/UInt16/UInt32/UInt64)varuintValue7:UInt=10
注意:⽆符号的数⽐有符号的取值范围更⼤,因为符号位也⽤来存值Swift是类型安全的语⾔,如果取值错误会直接报错,⽽OC不会
取值不对
OC:unsignedintintValue = -10;不会报错
Swift:varintValue:UInt= -10会报错
溢出:
OC:intintValue =INT_MAX+1;不会报错
Swift:varintValue:UInt=UInt.max +1会报错
数据类型的相互赋值(隐式类型转换)
OC可以隐式类型转换
intintValue =10;
doubledoubleValue = intValue;
Swift:不具有隐式类型转换
在Swift中“值永远不会被隐式转换为其他类型”(OC中可以隐式类型转换)以下语句会报错
varintValue:Int=10
vardoubleValue:Double= intValue
数据数据类型转换类型转换
Swift不允许隐式类型转换,但可以使⽤显⽰类型转换(强制类型转换)OC写法
intintValue =10;
doubledoubleValue = (double)intValue;
Swift写法:
varintValue:Int=10
vardoubleValue:Double
doubleValue=Double(intValue)
注意:Double()并不会修改intValue的值
⽽是通过intValue的值⽣成⼀个临时的值赋值给doubleValue print(intValue)
print(doubleValue)
03- 运算符
算术运算符:
+ - * / % ++ --
除了取模,其它和OC⼀样,包括优先级
学swift语言能干什么
varresult =10+10
result =10*10
result =10-10
result =10/10
print(result)
注意:Swift是安全严格的编程语⾔,会在编译时候检查是否溢出但是只会检查字⾯量⽽不会检查变量
所以在Swift中⼀定要注意隐式溢出
遇到这种问题可以利⽤溢出运算符解决该问题:
取模%
OC:只能对整数取模
NSLog(@"%tu",10%3);
Swift:⽀持⼩数取模
print(10%3.5)
⾃增⾃减
varnumber =10
number++
print(number)
number--
print(number)
赋值运算
varnum1 =10
num1 =20
num1 +=10
num1 -=10
num1 /=10
num1 *=10
num1 %=5
print(num1)
基本⽤法和OC⼀样,唯⼀要注意的是表达式的值
OC:表达式的结合⽅向是从左⾄右
整个表达式的值整体的值等于最后⼀个变量的值,简⽽⾔之就是连续赋值写法为:
intnum1;
intnum2;
num2 = num1 =10;
NSLog(@"%d",num2);
Swift:不允许连续赋值, Swift中的整个表达式是没有值的.
主要是为了避免if (c == 9)
这种情况误写为if (c = 9) ,c = 9是⼀个表达式,表达式是没有值的
所以在Swift中if (c = 9)不成⽴
下⾯这个写法是在swift当中不允许的
varnum1:Int
varnum2:Int