在上一篇博客“窥探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之基本数据类型的更多相关文章

  1. 窥探Swift之新添数据类型元组与可选值

    今天的博客中就总结一下关于Swift中相对Objc新添加的两个数据类型:元组(Tuple)和可选值类型(Optional).上面这两个类型是Swift独有的类型,使用起来也是非常方便的,今天就通过一些 ...

  2. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

  3. 窥探Swift编程之强大的Switch

    之前初识Swift中的Switch语句时,真的是让人眼前一亮,Swift中Switch语句有好多特有而且特好用的功能.说到Switch, 只要是写过程序的小伙伴对Switch并不陌生.其在程序中的出镜 ...

  4. 窥探Swift编程之错误处理与异常抛出

    在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中 ...

  5. 窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

    协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) - ...

  6. 窥探Swift之类的继承与类的访问权限

    上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...

  7. 窥探Swift编程之在Playground上尽情的玩耍

    自从苹果公司发布Swift的时候,Xcode上又多了一样新的东西---"Playground".Playground就像操场一样,可以供我们在代码的世界里尽情的玩耍,在本篇博客中就 ...

  8. 汇编窥探Swift String的底层

    String(字符串),是所有编程语言中非常重要的成员,因此非常值得去深入研究.众所周知,字符串的本质是字符序列,由若干个字符组成.比如字符串 "iOS" 由 'i'.'O'.'S ...

  9. Swift系列一 - 数据类型

    如果你习惯了OC的语法,第一次接触Swift的语法可能会有点抗拒,因为Swift的语法有点怪.但如果你有前端的基础,学Swift可能会有点吃力,如果你有C++的基础可能会学得比较快点.不管你有什么样的 ...

随机推荐

  1. OSGEarth编译

    解决OSGEarth编译时出现error LNK1181: 无法打开输入文件“optimized.lib的问题 以下方案受到了osg大神qq网名为“阿威.小号”的帮助. 在采用Cmake3.6.2创建 ...

  2. sparkR读取csv文件

    sparkR读取csv文件 The general method for creating SparkDataFrames from data sources is read.df. This met ...

  3. HDU 2202 计算几何

    最大三角形 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. Oracle中的CHR()函数与ASCII()函数

    工作中经常会处理一些因特殊字符而导致的错误,如上周我就遇到了因为换行符和回车符导致的数据上报的错误,这种错误比较难以发现,通常是由于用户的输入习惯导致的,有可能数据极少,就那么几行错误从而导致整个数据 ...

  5. MongoDB 聚合管道(Aggregation Pipeline)

    管道概念 POSIX多线程的使用方式中, 有一种很重要的方式-----流水线(亦称为"管道")方式,"数据元素"流串行地被一组线程按顺序执行.它的使用架构可参考 ...

  6. Python黑帽编程 3.2 ARP监控

    Python黑帽编程 3.2 ARP监控 在第3.1节<ARP欺骗>中,我们学习了ARP的基本原理,使用Python实现了我们自己的ARP欺骗工具.在上一节的基础上,我们来实现一个ARP监 ...

  7. ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

    一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归. ...

  8. 作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序

    1. 编写一个能自动生成小学四则运算题目的程序.(10分)   基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图.   本题发一篇随笔,内容包括: 题 ...

  9. c#实现redis客户端(一)

    最近项目使用中要改造redis客户端,看了下文档,总结分享一下. 阅读目录: 协议规范 基础通信 状态命令 set.get命令 管道.事务 总结 协议规范 redis允许客户端以TCP方式连接,默认6 ...

  10. JSON与XML的区别比较

    1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...