01Swift常量,变量与基本数据类型以及运算符

简介

Swift是一种全新的语言,他是苹果官方推荐我们使用的一门语言,他比我们的OC还要简洁,直接。
当然,他的书写方法与我们的OC也有一定的区别

打印Hello World

printf("Hello Word")

注意:Swift语法中是不需要在语句后面加上分号的

01、常量与变量

打印我们hello world !!!

| OC | NSLog(....); |
| -- | - -------- |
| Swift |** print(...)**|

注意:我们的Swift是不需要加上分号的

什么是常量?

常量就是在程序运行的过程中值永远不会变得量

什么是时变量?

顾名思义:时变量就是在程序运行过程中,值不断变化的量

类型 声明方法
常量 let
时变量 var

常量定义方式

1、你可以选择任意你喜欢的字符、或者是Unicode(就是Mac表情)字符定义常量、变量名
2、常量名、变量名不能包括以下几种符号:
数学符号、箭头、保留的(非法的)Unicode码位、连线、制表符
也不能以数字开头、但是可以在常量、变量名的其他地方包含数字
注意:Swift在定义常量的时候必须进行初始化,OC不用,但是Swift如果不进行初始化,就会报错

let max = 100
let 👿 = 200

在Swift中如果想要先定义一个变量,
以后使用时在初始化必须在定义时告诉编译器变量的类型(类型标注)
写法为:

var age: Int
age = 20

定义的同时初始化:

在Swift中如果定义的同时初始化一个变量,可以不用写数据类型,编译器会根据初始化的自动推断出变量的类型(类型推断机制

var age: Int = 20
var age = 20

02、swift基本数据类型

基本数据类型

OC:
整型:int intValue = 10;
浮点型:double doubleValue = 10.10; float floatValue = 5.1;
长:long
短:short
有符号: signed
无符号: unsigned
各种类型的数据的取值范围在不同位的编译器下取值范围不同

Swift:注意关键字的大写
整型

var intVlue: Int = 10

浮点型

var intValue1: Double = 10.10 // 表示6位浮点数
var intValue2: Float = 9.3 // 表示32位浮点数  

如果按照长度划分:Swift中的长短比OC更加精确

var intValue3: Int8 = 6
var intValue4: Int16 = 7
var intValue5: Int32 = 8
var intValue6: Int64 = 9

有符号、无无符号

默认有符号的是(UInt8/UInt16/UInt32/UInt64)

var uintValue: UInt = 10

注意:无符号的数比有符号的取值范围更大,因为符号也用来存值

Swift是类型安全的语言,如果取值错会直接报错,而OC不会

取值错误:
OC:

unsigned int intValue = -10;//不会报错

Swift:

var intValue: UInt = -10 // 会报错

溢出:
OC:

int intValue = INT_MAX + 1; // 不会报错

Swift:

var intValue:UInt = UInt.max + 1 // 报错

数据类型的相互赋值(隐式类型转换)

OC可以隐式类型转换:

int intValue = 10;
double doubleValue = intValue;

Swift不具备有隐式类型转换:
以下语句会报错:

var intValue: Int = 10
var doubleValue: Double = intValue

数据类型转换

Swift不允许隐式类型转换,但是可以使用显示类型转换(强制类型转换)
OC写法

int intValue = 10;
double doubleValue = (double)intValue;

Swift写法

var intValue: Int = 10
var doubleValue: double
doubleValue = Double(intValue)

注意:Double()并不会修改intValue的值,而是通过intValue的值生成一个临时的值赋值给doubleValue

print(intValue)
print(doubleValue)

3、SWift运算符

这里就简单的说一说
+、-、*、/、%、++、--
其实Swift与OC运算符只有一个取模不同,其他的完全相同,包括优先级
只是取模中Swift还能够进行小数取模,包括优先级

注意:Swift是安全严格的编程语言,会在编译的时候检查是否溢出 但只是会检查字面量而不会检查变量
所以在Swift中一定要注意隐式溢出
遇到这种情况解决办法就是
(http://www.yiibai.com/swift/overflow_operators.html)

取模

// OC: 只对整数取模
NSLog(@"%tu", 10 % 3);
// Swift支持小数取模
print(10 % 3.5)

自增自减

var number = 10
number++
print(number)
number--
print(number)

赋值运算

var num1 = 10
num1 = 20
num1 += 10
num1 -= 10
num1 /= 10
num1 *=10
num %= 10
print(num1)

注意: Swift的基本语法和OC一样, 唯一要注意的就是表达式的值

OC: 变大时的结合方向是从左到右
整个表达式的值整体是等于最后一个变量的值, 简而言之就是连续赋值 写法为 :

int num1;
int num2;
num1 = num2 = 10;
NSLog(@"%d", num2);

在Swift中不允许连续赋值, Swift的整体表达式是没有值的. 主要是为了避免if (c == 9) 误写成if (c = 9)
c = 9 是一个表达式, 表达式是没有值的 所以在Swift中if (c = 9)不成立 会报错

// Swift中这种写法是错误的
var num1: Int
var num2: Int
num2 = num1 = 10

4. 逻辑运算符

C语言和OC并没有真正的Bool类型
C语言的Bool类型非0即真
OC语言的Bool类型是
typedef sighed char Bool;

Swift中引入了真正的Bool类型
Bool true false

  • Swift中if的条件只能是Bool的值或者是返回值是Bool类型的表达式
  • OC中if可以是任何只能是一个Bool的值或者是是Bool类型的表达式
    OC中if 可以是任何整数(非0即真), 但是存在的问题是可能是将判断写错, 写成赋值 if (isOpen = 2)
    在开发中为了避免这个问题
    有经验的程序员或这样写if(2 == isOpen)来避免这个问题.
    在Swift中很好解决这个问题

逻辑运算符在Swift当中之能操作Bool类型数据
在OC当中是非0即真. 可以操作整型
在swift中不允许这种操作, 其他基本和OC一致

var open = false
if !open
{
      print("打开")
} 

var age = 20
var height = 180
var wage = 30000
if (age > 25 && age < 40 && height > 175 ) || wage > 20000
{
    print("卧槽")
}

5. 区间

  • 闭区间: 包含区间内所有值 a...b 例如 1...5

  • 半闭区间: 包含头不包含尾 a..<b 例如: 1..<5
    注意:

  • Swift刚出来时的写法是a..b

  • 区间只能用于整数, 写小数会有问题
    for i in 1...5
    {
    print(i)
    }

      for i in 1..<5
      {
          print(i)
      }
    

作者说

  • 不好意思, UI文集暂时不更新了. 本人先将Swift笔记更新完. 以后的UI将会用Swift语言写.
  • 本人Swift学的并不成熟. 如果有不对的地方请各位指点. 后面我会继续努力的.
  • 寒假快要结束了, 先前一段时间一直在老家 . 没网😭😭😭 ,这两天刚到外面. 一到外面就开始写笔记了.
  • 初次接触Markdown. 见谅哈
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容