窥探Swift之基本数据类型
在上一篇博客“窥探Swift编程之在Playground上尽情的玩耍”中介绍了如何使用Playground来学习Swift语言。本篇博客就使用Playground来窥探Swift语言。千里之行始于足下,当然了,除非你是坐的高铁或者飞机。还是那句话从基础开始吧,本篇博客主要介绍一下Swift的基本数据类型。Swift中的数据类型可谓是百花齐放百家争鸣,下面就来窥探一下Swift中的基本数据类型。
一、Swift中的变量和常量
1.关键字“let”
常量,顾名思义,常量的值是不可以被再次改变的,比如你给number赋一个初始值"swift",那么number从你给它赋值的那一刻就代表着"swift"。就像你从生下来就是男的或者女的,你不能从一个真正的男的变成真正的女的,反过来也是不成立的。当然后天如果你去了趟泰国那就不算了,如果后天变性的,编译器会报错,说你这是人妖,是编译不过去的。说着说着又跑偏了,言归正传,在Swift中使用let关键字来创建一个常量并赋初始值后,那么该常量的值就不能被改变了,如果你在使用中尝试着去改变它,那么编译器真的会报错的。在OC和C++中可以用关键const来定义常量,而Swift中使用的是let。
下面的代码段定义一个名为gender的常量,并且赋值为"我是男的",在Playground的右边会紧接着出来gender的值,下面一句是尝试着给gender赋值,说你要去泰国那啥~在Swift的世界里是不允许你这么做的,所以给你一个错误“Cannot assign to 'let' value 'gender'”,就是不允许你给gender再次赋值,用一句通俗易懂的话就是,不允许你去泰国那啥。这就是Swift中的常量,一锤定音,一言既出,驷马难追是let的风格。

2.关键字“var”
如果世界上什么东西都是一成不变的,估计就生活不下去了对吧。不想当程序员的医生不是好老板,这些都是可以变得对吧,世界上一成不变的东西还是少的,大多数东西都在运动,都在变化,在Swift的世界里也是如此,变量的用处比常量要多的多。比如你现在是程序员,明天也要当老板,如果这东西是常量,那完了,就做一辈子程序员吧,但是在现实生活中是可以变得,下面就是使用关键字var来定义一个hopeMe变量,并且赋上“我是程序员”,你励志要做老板,有一天你做了老板,然后就变成了下面那句代码,这在Swift的世界中是可以的,所以编译器是不会给error的。

3.关于数据类型的说明
细心的园友会注意到上面不管是定义常量或者变量怎么没给这些变量或者常量指定数据类型呢?难道Swift像JS或者PHP这些语言一样是弱类型的?非也,并不是弱类型的,Swift可以自动推断数据类型,上面定义的都是string类型。下面这个实例,定义了一个变量intNumber,并赋上初始值10,使用sizeofValue()函数来查看该变量所占内存字节数,使用sizeof()函数来查看相应的数据类型所需存储空间。更好的方法是在键入该变量时查看提示的数据类型。

二、给变量显式指定相应的数据类型
上面不管是声明常量还是变量,都是有编译器通过类型推断来判断数据的类型的,接下我们就要显式的指定我们需要的数据类型。在Swift中数据类型可谓是丰富多彩呢。
1.显式声明不同字节的整数类型,在Swift中允许你来指定数据存储所需字节数。当然Int64是在64位系统上使用才占64个字节呢。

2.举一个简单的生活中的例子:不同物种是不可能进行结合产生正常的后代的,如果你告诉编译器马+Lv=?编译器会报个错,说你这是非法的,会产生一个不正常的后代“ErrorMessage = Luo子”。不扯咸蛋了,言归正传,在Swift中是不允许不同的数据类型进行隐式运算的。不同数据类型的数字是不允许进行算术运算的,即使同为整型,如果存储所占字节数不同,在Swift中也是不允许对其进行算术运算的。Swift语言说的官方一些是类型安全的,不同类型的数据是不允许直接进行算术运算的,下面的实例很好说明了这个问题。

3.Swift对不同数制的也是有着很好的支持,为了可读性,Swift中允许你对较大的数进行分隔如下图所示,0b表示二进制,0o表示8进制,0x表示十六进制。

三、Swift中的浮点型
1.其他编程语言中也是有浮点型的了,下面的Dmeo给出了不同类型的浮点型在内存中存储时所需字节数。在Swift中默认是Double类型。

2.下面的Demo中给出类浮点型的计算,Float类型的数据是不允许和Double类型的数据直接进行运算的,还是那句话:swift中是不允许进行隐式类型转换的。

3.下面是浮点数的指数表示形式,如下所示

窥探Swift之基本数据类型的更多相关文章
- 窥探Swift之新添数据类型元组与可选值
今天的博客中就总结一下关于Swift中相对Objc新添加的两个数据类型:元组(Tuple)和可选值类型(Optional).上面这两个类型是Swift独有的类型,使用起来也是非常方便的,今天就通过一些 ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
- 窥探Swift编程之强大的Switch
之前初识Swift中的Switch语句时,真的是让人眼前一亮,Swift中Switch语句有好多特有而且特好用的功能.说到Switch, 只要是写过程序的小伙伴对Switch并不陌生.其在程序中的出镜 ...
- 窥探Swift编程之错误处理与异常抛出
在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中 ...
- 窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用
协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) - ...
- 窥探Swift之类的继承与类的访问权限
上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...
- 窥探Swift编程之在Playground上尽情的玩耍
自从苹果公司发布Swift的时候,Xcode上又多了一样新的东西---"Playground".Playground就像操场一样,可以供我们在代码的世界里尽情的玩耍,在本篇博客中就 ...
- 汇编窥探Swift String的底层
String(字符串),是所有编程语言中非常重要的成员,因此非常值得去深入研究.众所周知,字符串的本质是字符序列,由若干个字符组成.比如字符串 "iOS" 由 'i'.'O'.'S ...
- Swift系列一 - 数据类型
如果你习惯了OC的语法,第一次接触Swift的语法可能会有点抗拒,因为Swift的语法有点怪.但如果你有前端的基础,学Swift可能会有点吃力,如果你有C++的基础可能会学得比较快点.不管你有什么样的 ...
随机推荐
- 腾讯网2016回响中国:华清远见荣获2016年度知名IT培训品牌
12月1日,由腾讯网主办的“2016回响中国·腾讯网教育年度盛典”上,揭晓了“2016腾讯网教育年度总评榜”榜单.高端IT就业培训专家——华清远见教育集团凭借自身优质的高薪IT就业服务优势成功入围,荣 ...
- SICAU教务系统登录密码加密算法的VB方式实现
关于一个算法.这个算法是SICAU教务系统在账号登录时采取的一个加密算法.算法的实现并不复杂. 具体如下: Function Form1pwdvalue(ByVal pwdvalue As Strin ...
- web前端面试题汇总
1.doctype作用 <!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在 ...
- python lxml install
之前记得安装libxslt和libxml yum install libxml* -yyum install libxslt* -y wget http://lxml.de/files/lxml-3. ...
- python中__init__问题
python中安装目录中的Lib文件夹模块中的__init__.py文件(文件内容可以为空),用于标识此文件夹是一个模块 python编程中的__init__表示初始化
- 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)
稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像 ...
- JavaScript编码规范
1 代码风格 1.1 结构语句 [强制] 不得省略语句结束的分号. [强制] 在 if / else / for / do / while 语句中,即使只有一行,也不得省略块 {...}. 示例: / ...
- JS简介,如何快熟JS。打下结实基础。
JS决定网页的行为,有行为就有逻辑,而计算机只是人工智能,你给它什么样的指令,它就会按照你的指令去运行. 有人会问,既然是给出指令,那还需要什么逻辑? 这里我举一个简单的小例子来说明一下! 到你想输入 ...
- DotNet Core 介绍
前言 asp.net core rtm 6月底即将发布,自己也想着为社区做点共享,刚好最近不太忙,看到社区的小伙伴们都在为dotnet core的推广而贡献力量,项目中刚好在用rc2版本,就多写些文章 ...
- 框架设计之ADO.NET Command的ExecuteScalar误用情景及底层解说
最近下载了点资料,学了学Android,发现Android入门还算简单,从.NET过渡到Android,也就三七十一天的事. 大伙有空也可以学学... 好了,言归正文,那日,有网友发了一个他们公司的数 ...