窥探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++的基础可能会学得比较快点.不管你有什么样的 ...
随机推荐
- web前端笔试选择题
1. 要动态改变层中内容可以使用的方法有(AB ) a)innerHTML b)innerText c)通过设置层的隐藏和显示来实现 d)通过设置层的样式属性的display属性 2. 当按键盘A时, ...
- Codeforces Round #361 (Div. 2) D
D - Friends and Subsequences Description Mike and !Mike are old childhood rivals, they are opposite ...
- Hello Bugs
2014-01-09 [Maven]Not Authorized ReasonPhame: Failed to decrypt password... 描述:eclipse中使用maven进行mvn ...
- 【转】你所不知道的Android Studio调试技巧
这篇写Android studio debug技巧个人觉得写得不错,转自:http://www.jianshu.com/p/011eb88f4e0d# Android Studio目前已经成为开发An ...
- android 通过uri获取bitmap图片并压缩
很多人在调用图库选择图片时会在onActivityResult中用Media.getBitmap来获取返回的图片,如下: Uri mImageCaptureUri = data.getData(); ...
- android ADT 无法查看第三方jar源代码
Source not foundThe JAR of this class file belongs to container 'Android Private Libraries' which do ...
- android布局实践——模仿微信主界面
这是目前微信6.0版本的主界面 先来分析一波: 1.(top.xml)界面头部有一个微信(6)消息提醒 一个搜索图标 一个更多的的图标+,中间还有一段空白,我们可以弄两个textView(其 ...
- 谢欣伦 - OpenDev原创例程 - 网络摄像机WebCamera
Win7没有预装摄像头软件,打开摄像头通常需要第三方软件来完成.第三方软件,好的要收费,免费的又没几款,其中功能完整的寥寥可数.正好我在做一个数字摄像头视频捕获的功能,经过两周的整理优化,我做了一个简 ...
- $Host.Runspace.ThreadOptions = “ReuseThread”有神马用?
$Host.Runspace.ThreadOptions = “ReuseThread” 在很多PowerShell的脚本中你都会看到这个语句被用来开头,那它的作用是什么呢? 答:这个设置可以提高对内 ...
- html5学习笔记一
HTML5学习笔记 <video>标记:定义视频,Ogg.MPEG4.WebM三种格式 <video src=”movie.ogg” controls=”controls”> ...