Swift基础学习(二)数据类型

  在编程语言中,不同的数据信息需要不同的数据类型来存储,计算机内存中针对不同的数据类型它们所分配的内存大小是不同的,特定的值需要特定的类型来声明。

 Swift 数据类型

  内置数据类型

  整数 - Int & UInt

  根据一个整数变量占据的内存空间(8/16/32/64-bit,现在 iOS 开发基本全部是 64 位)以及整数是否带有符号(Unsinged),Swift 一共定义了 8 种不同的整数类型:

  Int8/Int16/Int32/Int64

  UInt8/UInt16/UInt32/UInt64

  第一行表示有符号整数,第二行表示无符号整数。

  一般不会在代码中直接使用这些具体的整数类型,只使用 Int 来定义有符号整数,使用 UInt 来定义无符号整数。Swift 编译器会根据当前的目标编译平台,把 Int 或者 UInt 转换成相应的整数类型。

  例如在 32 位平台上,Int 和 Int32 表示的整数长度相等。

  在 64 位平台上,分别使用 mix 和 max 方法,看看 Int 和 Int64 所表达的值分别是多:

 1 print("Int.min = \(Int.min)")
 2 print("Int.max = \(Int.max)")
 3 print("Int64.min = \(Int64.min)")
 4 print("Int64.max = \(Int64.max)")
 5
 6 打印结果:
 7 Int.min = -9223372036854775808
 8 Int.max = 9223372036854775807
 9 Int64.min = -9223372036854775808
10 Int64.max = 9223372036854775807

  Int 和 Int64 表达的范围是一样的。

  同时在 Swift 里面,可以用不同的进制来表达一个整数:

1 let fifteenInDecimal = 15 // 10 进制
2 let fifteenInHex = 0xF // 16 进制
3 let fifteenInOctal = 0o17 // 8 进制
4 let fifteenInBinary = 0b1111 // 2 进制

  以及在数字中使用下划线:

1 let million = 1_000_000

  提示: 除非所在的硬件平台有特别明确的要求要使用 UInt 来定义无符号整数,那么应该尽可能的使用 Int 来表达所有的整数类型,哪怕可以确定一个整数一定是非负数,这会减少很多不必要的类型转换的麻烦。

 浮点数 - Float & Double

  在 Swift 里面,根据表达的精度不同,有两种不同的浮点数类型:

  Float: 最多表达 6 位精度的浮点数。

  Double: 至少可以表达 15 位精度的浮点数。

1 var oneThirdInFloat: Float = 1/3
2 var oneThirdInDouble: Double = 1/3
3
4 print("\(oneThirdInFloat)")
5 print("\(oneThirdInDouble)")
6
7 打印:
8 0.333333
9 0.333333333333333

  还可以使用科学计数法表示浮点数:

1 var PI = 0.314e1
2 PI = 314e-2

  提示: 如果没有明确的需求,应该统一使用 Double 来定义浮点数。

 和数字有关的 Type Inference

  在 Swift 里,当给变量不指定类型的时候,编译器会把整数的类型推倒为 Int,会把浮点数的类型推倒为 Double:

1 var three = 3
2 print(" 3 的类型是: \(type(of: three))")
3
4 var zeroPointForteen = 0.4
5 print(" 0.4 的类型是: \(type(of: zeroPointForteen))")
6
7 打印:
8  3 的类型是: Int
9  0.4 的类型是: Double

  在 Swift 里面可以把不同类型的数字的字面值直接进行运算:

1 var PI = 3 + 0.14
2 print(" PI 的值: \(PI), PI 的类型是:\(type(of: PI))")
3
4 打印:
5  PI 的值: 3.14, PI 的类型是:Double

  但是不能把不同数字类型的变量直接进行算数运算,当对变量进行算数运算的时候,所有变量的类型必须是相同的,如果变量类型不同,必须明确将其中一些变量进行类型转换:

1 var sum = Double(three) + zeroPointForteen

  从上面可以看出,使用 Double(three) 把一个 Int 类型的 three "转换"成了浮点数,在这里,之所以对转换加引号,是因为并没有真的把 three 类型从 Int 转换成 Double,而是用 three 的值,初始化了一个新的值为 3 的 Double,并用这个新的 Double 和 zeroPointForteen 相加而已。

参考链接:https://www.boxueio.com/series/swift-up-and-running/ebook/2

时间: 2024-08-05 10:34:46

Swift基础学习(二)数据类型的相关文章

Swift开发学习(二):Playground

Swift开发学习:Playground 关于 对于软件用户.游戏玩家,大家一直都在提倡用户体验.其实软件开发者自己也是用户,是各种开发工具的使用者,也会喜欢用户体验做得好的工具软件.这次苹果想开发者所想,提供了一个可以玩转swift的游乐场--Playground,它为开发着提供了方便.提供了乐趣. 原文作者:Power 转载请保留此链接. Playground可以干什么 快速练习swift 不需要编译.不需要点击执行,编写代码后直接看效果 是不是比脚本语言还方便? 开发者可以通过Playgr

puppet基础学习(二)

puppet基础学习(二) 六.ResourceOrdering(资源定序) 使用变化参数before , require , notify , subscribe catalog是对一个给定的系统的所有资源及关系的编译,在编译catalog时,除非我们指定资源的执行顺序,不然puppet是以其自己的顺序管理,大多数时候puppet指定适当的方式,例如puppet管理用户gigabyte应该存在和文件夹/home/gigabyte/bin应该存在并属于用户gigabyte时,puppet会自动指

Swift之基础学习二

//MARK: - ?(可选类型)和!(强制解包)的区别 var number : Int?var number1 = number!//程序会崩溃(如果对值为nil的变量进行强制解包,会造成程序崩溃) //MARK: - 结构体 1 //1.声明一个结构体 2 struct Rect { 3 //声明结构体变量的属性(存储属性) 4 var x : Float 5 var y : Float 6 var width : Float 7 var heighy : Float 8 //声明结构体属

Swift基础学习(一)基本语法

Swift 简介(赞美一番,收集了多篇 关于Swift 学习教程的语言简介一直以为英语和汉语混写的时候只是英语字母结尾的地方打空格,原来是英语字母的开头和结尾都要加一个空格,英语字母后面是标点符号的时候不加空格): Swift 是一种新的编程语言,用于编写 iOS,macOS,watchOS 和 tvOS 的应用程序.Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制.Swift 采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣.Swif

Swift基础学习01

相关网站:http://www.cnblogs.com/tt_mc/p/3871295.html 相关辅助操作: 可以在右边直接查看输出值 可能出现的常见问题: 1.凡是=注意左右间距一样 2.程序有时会不断提示错误,解决方法:重启Xcode /*-----------1.常量与变量--------------*/ //1.在swift里面 变量的修饰用var 常量的修饰用let //2.print与println的区别是一个没换行一个换行了 //3.swift 数据类型写在变量名的后面 格式:

Redis 学习(二) —— 数据类型及操作

Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个字符串最大为 512M 字节.字符串数据类型适用于很多场景,例如,缓存 HTML 片段或者页面. Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串可以包含任意类型的数据,例如一张 JPEG 图像,或者一个序列化的对象. 我们可以把字符串当做位数组(位图)来处理,很容易统计一些基于

CSS入门基础学习二

我们下午继续学习CSS的入门基础,搬上你的小板凳赶快进入吧! 一.背景(background) Background-color:背景颜色 background-image (背景图片) background-repeat(设置背景平铺)  repeat (默认值) no-repeat (不平铺) repeat-x  (横向平铺) repeat-y (纵向平铺) background-position (设置背景位置) 设置具体值: left| right| top| bottom| cnete

C# 基础 学习 之 数据类型

首先 要知道 C# 的 基础 数据类型 并没有 内置于 C# 的语言中,而是内置于 .net Framework 中的, 当我们 声明 一个 类型时,例如(int),实际是 得到的 一个 .net结构System.Int32的一个实例.因为 net 支持 多种 语言的 编码(跨语言),他们最终 会 转化成 中间语言 IL; 这样的好处有 1. 确保了 强制 类型 安全 2. 实现了 不同语言的 交互性 3. 所有数据 都是对象, 所以 有属性 ,有 方法, 比如  把 一个字符串 “123” 转

swift基础学习(04)[运算符、属性、属性观察器、方法、下脚标本、继承、构造器]

//swift恒等运算符 //===恒等,不等!== //运用这两个运算符检测两个常量或者变量是否引用同一个实例 //"等价于"表示两个类类型(class type)的常量或者变量引用同一个类实例. //等于"表示两个实例的值"相等"或"相同",判定时要遵照设计者定义的评判标准,因此相对于"相 等"来说,这是一种更加合适的叫法. //类和结构体的选择 //属性的存储只能是类或者是结构体 //存储属性:变量存储属性va