在上一篇博客“窥探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. 【转贴】Python处理海量数据的实战研究

    最近看了July的一些关于Java处理海量数据的问题研究,深有感触,链接:http://blog.csdn.net/v_july_v/article/details/6685962 感谢July ^_ ...

  2. 【Telerik】<telerik:RadComboBox>导出列表数据

    近来在做项目,做到导出功能.使用<telerik:RadComboBox>的下拉框来实现导出部分或导出所有数据的功能.

  3. Log4j按级别输出到不同文件

    log4j.properties 文件: log4j.logger.net.sf.hibernate.cache=debug log4j.rootLogger = error,portal_log,s ...

  4. 防止XSS攻击的方法

    什么是XSS? 使用Jsoup来防止XSS攻击 Jsoup官网 Jsoup中文 maven包引入 <dependency> <groupId>org.jsoup</gro ...

  5. pythonchallenge 解谜 Level 7

    #-*- coding:utf-8 -*- #代码版本均为python 3.5.1 #Level 7 from PIL import Image x_begin, x_end = 0, 609 y_b ...

  6. Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告

    本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/12/31/KafkaColumn5_kafka_benchmark 摘要 本文主要介绍了如何利用 ...

  7. myeclipse连接数据库sql server

    1.打开数据库Microsoft sql server2008,输入以下命令: 此时可是看到端口号为1619,记住此端口号,等会儿会用到. 2.打开myeclipse2014,找到最上方的myecli ...

  8. SVN冲突

    svn冲突,导致工程打不开,报错:xxx..xcodeproj  cannot be opened because the project file cannot be parsed. 解决方法:   ...

  9. asp.net 生成图形验证码(字母和数字混合)

    验证码技术是网站开发过程中比较重要的技术,可以防止非法人员利用注册机或者登陆工具来攻击我们的网站.下面是效果图: 具体实现方法如下: 1.主要思路是:引用Using System.Drawing命名空 ...

  10. 关于ReSharper

    Resharper提供以下6个核心功能1. 代码分析(Code Analysis):智能提示代码中存在的问题和修复建议. 2. 编码助手(Coding Assistance):智能提示自动完成功能.  ...