Swift - 2、数据类型-01-基本数据类型

1 Int 整型、整数

整型(Int)指的是没有小数点的数字,可以有符号 (正、负、零)或是无符号 (正、零)。

Swift 提供 8 、 16 、 32 和 64 位元的有符号的整数类型,依序为Int8Int16Int32Int64,以及无符号的整数类型,依序是UInt8UInt16UInt32UInt64。一般情況這個不用去考慮太多。

一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整型类型Int,长度与当前平台的原生字长相同:
在 32 位元平台与Int32相同,
在 64 位元平台则与Int64相同。

通常我们使用整型类型时,大部分情况都建议只使用Int即可。不需要小数点的,就用Int

2 Float、Double浮点数

浮点数(Float、Double)指的是有包含小数点的数字,FloatDouble的差别在于精确度,Float有 6 位数,而Double可以达到 15 位数,如下:

let piValue = 3.1415926
var height = 178.25
// 声明浮点数时 如果没有类别标注 通常会将他判断为 Double 
let oneHeight = 165.25 // 类别为 Double
let anotherHeight: Float = 175.5 // 除非类别标注填写为 Float

需要用到小数点的,用 Double 就好了。

  • 整数和浮点数转换

整数和浮点数的转换必须指定类别。例子如下:

// 类别为整数 Int
let number1 = 3
// 类别为浮点数 Double
let number2 = 0.1415926

// 相加前 需要将 Int 转换成 Double 否则会报错误
let pi = Double(number1) + number2
 
// 这个值的类别也就是 Double
// 打印:3.1415926
print(pi)

相反来说也行,可以将浮点数转换成整数,而小数点后的数字就会被截断。如下:

let integerPi = Int(pi)
// 类别为 Int 小数点后的数字被截断
// 所以只会打印:3
print(integerPi)

3 Bool 布尔值、布林值

Swift 有一个基本的布尔(Boolean)类型,叫做 Bool。布尔值指逻辑上的值,因为它们只能是真或者假。Swift 有两个布尔常量,true 和 false。

就是“有”、“没有”;“对”、“错”;“肯定”、“否定”的概念。

let storeOpen = true
let forFree = false

4 Character字符

字符、字元(character)指的是依照编码格式的一个位元组(简单来说就是一个英文字母、数字或符号)。
字符指的是单个字母,例如:"C"

5 String字符串

字符串(string)是有序的字元集合(简单说就是一段文字),皆是以一对双引号"前后包起来。

  • 字符串是字符的序列集合,例如:
"Hello, World!"
let firstString = "Nice to meet you."
let secondString = "Nice to meet you,too."
  • 声明字符串时 不论字数多少 都会判断为 String,除非类别标注填写为 Character
let str1 = "It is a string ." // 类别为 String
let str2 = "b" // 类别仍然是 String
let str3: Character = "c" //  除非类别标注填写为 Character
  • 如果要在字符串中加入其他变数或常数,要使用\() 这个方式,如下
let score = 80
let string = "My score is \(score) ."
//打印:My score is 80 .
print(string)

这个()的方法会经常地用到,练习一下,你会很喜欢的。

  • 字符串链接
    字符串可以通过 + 号来连接,实例如下:
let constA = "a"
let constB = "b"
var stringA = constA + constB
print( stringA )

以上程序执行输出结果为:

ab
  • 字符串长度
    字符串长度使用 String.count 属性来计算,实例如下:

Swift 3 版本使用的是 String.characters.count

var varA   = "abc"
print( "\(varA), 长度为 \(varA.count)" )

以上程序执行输出结果为:

abc ,长度为 3
  • 字符串比较
    你可以使用 == 来比较两个字符串是否相等:
var varA   = "Hello, Swift!"
var varB   = "Hello, World!"

if varA == varB {
   print( "\(varA) 与 \(varB) 是相等的" )
} else {
   print( "\(varA) 与 \(varB) 是不相等的" )
}

以上程序执行输出结果为:

Hello, Swift! 与 Hello, World! 是不相等的
  • 多行字符串
    类似于OC中的\n 换行
let name = """
hello~
my name is lk.
"""
// 输出结果
// hello~
// my name is lk
print(name)
  • 字符串转数组

方法一、

var str   = "你 好 啊"
var arr = Array(str)
print(arr)

以上程序执行输出结果为:

["你", " ", "好", " ", "啊"]

方法二、

var str   = "你 好 啊"
var arr = str.split(separator: " ")
print(arr)

以上程序执行输出结果为:

["你", "好", "啊"]
  • 字符串的遍历 Swift 5:
let str = "abcde"

print("---- 正序遍历 ----")
var i = 0
for ch in str {
    print("\(i): \(ch)")
    i += 1
}
  • Unicode 字符串

Unicode 是一个国际标准,用于文本的编码,Swift 的 String 类型是基于 Unicode建立的。你可以循环迭代出字符串中 UTF-8 与 UTF-16 的编码,实例如下:

var unicodeString   = "你好啊"

print("UTF-8 编码: ")
for code in unicodeString.utf8 {
   print("\(code) ")
}
print("UTF-16 编码: ")
for code in unicodeString.utf16 {
   print("\(code) ")
}

以上程序执行输出结果为:

UTF-8 编码: 
228 
189 
160 
229 
165 
189 
229 
149 
138 
UTF-16 编码: 
20320 
22909 
21834 
  • 字符串函数及运算符
    Swift 支持以下几种字符串函数及运算符:
序号 函数/运算符 & 描述
1 isEmpty 判断字符串是否为空,返回布尔值
2 hasPrefix(prefix: String) 检查字符串是否拥有特定前缀
3 hasSuffix(suffix: String) 检查字符串是否拥有特定后缀。
4 Int(String) 转换字符串数字为整型。
5 String.count Swift 3 版本使用的是 String.characters.count计算字符串的长度
6 utf8 您可以通过遍历 Stringutf8 属性来访问它的 UTF-8 编码
7 utf16 您可以通过遍历 Stringutf8 属性来访问它的 utf16 编码
8 unicodeScalars 您可以通过遍历String值的unicodeScalars属性来访问它的 Unicode 标量编码.
9 + 连接两个字符串,并返回一个新的字符串
10 += 连接操作符两边的字符串并将新字符串赋值给左边的操作符变量
11 == 判断两个字符串是否相等
12 < 比较两个字符串,对两个字符串的字母逐一比较。
13 != 比较两个字符串是否不相等。

字符串型字面量

image.png

数值范围

下表显示了不同变量类型内存的存储空间,及变量类型的最大最小值:

类型 大小(字节) 区间值
Int8 1 字节 -128 到 127
UInt8 1 字节 0 到 255
Int32 4 字节 -2147483648 到 2147483647
UInt32 4 字节 0 到 4294967295
Int64 8 字节 -9223372036854775808 到 9223372036854775807
UInt64 8 字节 0 到 18446744073709551615
Float 4 字节 1.2E-38 到 3.4E+38 (~6 digits)
Double 8 字节 2.3E-308 到 1.7E+308 (~15 digits)

原文链接:https://blog.csdn.net/weixin_42385177/article/details/121385190
原文链接:https://www.jianshu.com/p/cfc856d60692
原文链接:https://blog.csdn.net/ChasingDreamsCoder/article/details/53976255

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容