swift基本数据类型 – Swift最新教程

上一章Swift教程请查看:swift入门开发:变量、常量和字面量

在本教程中,你将了解Swift编程语言支持的不同数据类型,并在创建变量或常量时使用它。

数据类型是变量或常量可以存储的数据(值)类型。例如,在上一篇文章中,你创建了一个变量和一个常量来在内存中存储字符串数据。

该数据可以是文本/字符串(“Hello”)或数字(12.45),也可以是位(0和1),定义数据类型确保只存储已定义的数据类型。

让我们来看一个场景:

假设你想创建一个游戏,因为大多数游戏在游戏完成后都会显示高分和玩家的名字,所以你需要为你的游戏存储这两个数据。

最高分是一个数字(如59分)和一个字符串(如Van),你可以创建两个变量或常量来存储数据。

在Swift中,这可以通过声明变量和数据类型来实现:

var highScore:Int = 59
var playerName:String = "Van"

在这里,我们声明了类型为Int的highScore变量,它存储值59。以及playerName变量,类型为String,用于存储值Van。

然而,如果你这样做:

var highScore:Int = "Van"

你将得到一个编译时错误:cannot convert value of
type ‘String’ to specified type ‘Int’

这是因为你声明highScore来存储整数值,但在其中放置了字符串,这个错误确保highScore只能存储一个数字,而不能存储玩家的名字。

数据类型的大小

数据类型的另一个重要部分是它的大小,它指定可以存储在给定变量或常量中的数据的大小。

类型的大小是用位来度量的,可以存储最多2位的值,如果你不知道Bit,可以将它看作一个0或1的值。

因此,对于类型size
= 1位,它只能存储两个值:0或1。所以一个1位的字母程序可以把0解释为a/0,把1解释为b/1。0。

0 -> a or 0 
1 -> b or 1

同样,一个两位系统最多可以存储4个值(00,01,10,11),每个组合可以表示为:

00 -> a or 0
01 -> b or 1
11 -> c or 2
10 -> d or 3

对于一个n位系统,它最多可以存储2^n个值。

Swift基本数据类型

swift中最常用的数据类型如下:

Bool类型

  • Bool类型声明的变量/常量只能存储两个值,true或false。
  • 默认值:false
  • 当你用if-else语句时,它经常被使用。

示例1:布尔数据类型

let result:Bool = true
print(result)

整数类型

  • 声明为整数类型的变量/常数可以存储正数和负数,包括零且无小数部分。
  • 默认值:0
  • 大小:32/64位取决于平台类型。
  • 范围:-2,147,483,648至2,147,483,647(32位平台)
  • -9223372036854775808至9223372036854775807(64位平台
  • 有很多Integer类型的变体,例如 UInt,Int8,Int16等,最常用的是Int。
  • 如果你需要指定一个变量/常量可以容纳的整数的大小/类型,则可以使用UInt,Int8,Int16等进行更具体地存储,我们将在下面进行探讨。

示例2:整数数据类型

var highScore:Int = 100
print(highScore)
highScore = -100
print(highScore)

在上面的例子中,我们声明了一个类型为Int的变量highScore。

稍后,我们使用赋值运算符highScore
= -100将值更改为-100,因此,在屏幕中打印(highScore)输出-100。

让我们来研究一下Swift中Int类型的一些变体。

Int8

可以同时存储正数和负数的整数类型的变体。

  • 默认值:0
  • 尺寸:8位
  • 范围:-128到127

一个Int8整数可以存储28 =(256)个值,它可以存储0到255的数字。

但是,因为Int8包含正数和负数,所以我们可以存储-128到127之间的数字,包括0,其中总数为256个值或数字。

var highScore:Int8 = -128//ok
highScore = 127 //ok
highScore = 128 // error
highScore = -129 //error

你还可以使用内置在Swift函数中的.min和.max查找类型可以存储的最高和最低值。

例3:Max和Min Int8数据类型

print(Int8.min)
print(Int8.max)

使用UInt

  • 称为UInt(无符号整数)的整数类型的变体,它只能存储无符号数字(正数或零)。
  • 默认值:0
  • 大小:32/64位取决于平台类型。
  • 范围:0到4294967295(32位平台)
  • 0至18446744073709551615(64位平台)

示例4:UInt数据类型

var highScore:UInt = 100
highScore = -100 // 发生编译时错误

上面的代码将给出编译时错误,因为无符号整数只能存储0或正数,试图在无符号整数中存储负值将会出现错误。

浮点类型float

  • 浮点类型声明的变量或常量可以存储带有小数或分数点的数字。
  • 默认值:0.0
  • 大小:32位浮点数。
  • 范围:1.2*10-38至3.4
    * 1038(~6位)

例5:浮点数据类型

let highScore:Float = 100.232
print(highScore)

双精度浮点类型double

声明为double类型的变量/常量还将带有小数或分数点的数字存储为浮点数,但小数点比单精度浮点数float支持的大。

  • 默认值:0.0
  • 大小:64位浮点数。(因此,Double类型的变量可以存储大于浮点数支持的小数或分数点)
  • 范围:2.3*10-308到1.7*10308(~15位)

示例6:double数据类型

let highScore:Double = 100.232321212121
print(highScore)

字符

字符类型声明的变量/常量可以存储单字符字符串文字。

你可以使用转义序列\u{n}
(unicode编码点,n是十六进制)在Swift中包含表情符号或英语以外的语言作为字符。

示例7:字符数据类型

let playerName:Character = "J"
let playerNameWithUnicode:Character = "\u{134}"
print(playerName)
print(playerNameWithUnicode)

字符串

  • 字符串类型声明的变量或常量可以存储字符集合。
  • 默认值:””(空字符串)
  • 它是值类型,参见Swift值和引用类型。
  • 可以使用for-in循环对字符串进行迭代。参见Swift for-in循环。

Swift还支持一些特殊的转义序列来在字符串中使用它们。例如:

  • \0 (null字符),
  • \\ (一个简单的反斜杠),
  • \t (制表符),
  • \v (垂直标签),
  • \r (回车)
  • \” (双引号),
  • \’ (单引号)
  • \u{n} (unicode编码点,n是十六进制)。

示例8:字符串数据类型

let playerName = "NName"
let playerNameWithQuotes = "\"NAME\""
let playerNameWithUnicode = "\u{134}ueves"
print(playerName)
print(playerNameWithQuotes)
print(playerNameWithUnicode)

参见Swift字符和字符串,了解关于字符和字符串声明、操作和示例的更多信息。

除了这些数据类型,Swift中还有其他高级数据类型,如tuple、optional、range、class、structure等,这些数据类型你将在后面的章节中学习。

Swift数据类型使用注意事项

1. 由于Swift是一种类型推断语言,变量或常量可以从存储的值自动推断类型。因此,你以在创建变量或常量时跳过类型。但是,出于可读性考虑,你可以考虑编写类型,但不建议这样做。

例9:类型推断变量/常量

let playerName = "Name"
print(playerName)

Swift编译器可以根据变量的值自动推断其为字符串类型。

2. Swift是一种类型安全语言。如果将某个变量定义为某种类型,则以后不能用其他数据类型更改它。

例10:Swift是一种类型安全语言

let playerName:String
playerName = 55 // 编译时错误

上面的代码将创建一个错误,因为我们已经指定变量playerName将是一个字符串,所以我们不能存储一个整数。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?