李洪强iOS开发Swift篇—03_字符串和数据类型
李洪强iOS开发Swift篇—03_字符串和数据类型
一、字符串
字符串是String类型的数据,用双引号""包住文字内容 let website = "http://www.wendingding.com"
1.字符串的常见操作
(1)用加号 + 做字符串拼接
let scheme = "http://"
let path = “www.wendingding.com”
let website = scheme + path
// website的内容是”http://www.wendingding.com”

(2)用反斜线 \ 和 小括号 () 做字符串插值(把常量\变量插入到字符串中)
let hand = 2
var age = 20
let str = "我今年\(age)岁了,有\(hand)只手"
// str的内容是"我今年20岁了,有2只手"

注意:swift是类型安全语言,不同的数据类型是不能相加的。(需要强制转换类型)

2.打印输出
Swift提供了2个打印输出函数
println :输出内容后会自动换行
print :对比println,少了个自动换行的功能
二、数据类型
1.Swift中常用的数据类型有
Int、Float、Double、Bool、Character、String
Array、Dictionary、元组类型(Tuple)、可选类型(Optional)
注意:数据类型的首字母都是大写的
2.指定变量\常量的数据类型
在常量\变量名后面加上 冒号(:) 和 类型名称
let age: Int = 10
上面代码表示:定义了一个Int类型的常量age,初始值是10
提示:一般来说,没有必要明确指定变量\常量的类型。如果在声明常量\变量时赋了初始值,Swift可以自动推断出这个常量\变量的类型
如:let age = 20 Swift会推断出age是Int类型,因为20是个整数

三、变量的初始化
Swift严格要求变量在使用之前必须进行初始化
注意:下面的代码是错误的
var a: Int
let c = a + 10
说明:
第1行代码中:Swift并不会为变量a赋初值,a没有初始化
第2行代码会报错
下面的代码是正确的
var a: Int = 20
let c = a + 10
四、整数
1.整数的分类
整数分为2种类型
有符号(signed):正、负、零
无符号(unsigned):正、零
Swift提供了8、16、32、64位的有符号和无符号整数,比如
UInt8 :8位无符号整型
Int32 :32位有符号整型
Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64
2.最值
可以通过min和max属性来获取某个类型的最小值和最大值
let minValue = UInt8.min // UInt8 类型的 min 等于0
let maxValue = UInt8.max // UInt8 类型的 max 等于255
3.Int和UInt
Swift还提供了特殊的有符号整数类型Int和无符号整数类型UInt
说明:Int\UInt的长度和当前系统平台一样
在32位系统平台上,Int和UInt的长度是32位
在64位系统平台上,Int和UInt的长度是64位
Int在32位系统平台的取值范围:-2147483648 ~ 2147483647
建议
在定义变量时,别总是在考虑有无符号、数据长度的问题
尽量使用Int,这样可以保证代码的简洁、可复用性
4.存储范围
每种数据类型都有各自的存储范围,比如
Int8的存储范围是:–128 ~ 127
UInt8的存储范围是:0 ~ 255
如果数值超过了存储范围,编译器会直接报错
注意:下面的语句都会直接报错
let num1: UInt8 = -1
let num2: Int8 = Int8.max + 1
说明:
第1行代码报错原因: UInt8不能存储负数
第2行代码报错原因: Int8能存储的最大值是Int8.max
5.整数的表示形式
整数的4种表示形式
(1)十进制数:没有前缀
let i1 = 10 // 10
(2)二进制数:以0b为前缀
let i2 = 0b1010 // 10
(3)八进制数:以0o为前缀
let i3 = 0o12 // 10
(4)十六进制数:以0x为前缀
let i4 = 0xA // 10
五、浮点数
1.浮点数说明
浮点数,就是小数。Swift提供了两种浮点数类型
Double :64位浮点数,当浮点值非常大或需要非常精确时使用此类型
Float :32位浮点数,当浮点值不需要使用Double的时候使用此类型
精确程度
Double :至少15位小数
Float :至少6位小数
注意:如果没有明确说明类型,浮点数默认就是Double类型
let num = 0.14 // num是Double类型的常量
2.浮点数的表示形式
浮点数可以用 十进制 和 十六进制 2种进制来表示
(1)十进制(没有前缀)
1)没有指数:let d1 = 12.5
2)有指数 :let d2 = 0.125e2
// 0.125e2 == 0.125 * 10²
MeN == M * 10的N次方
(2)十六进制(以0x为前缀,且一定要有指数)
let d3 = 0xC.8p0
// 0xC.8p0 == 0xC.8 * 2º == 12.5 * 1
0xMpN == 0xM * 2的N次方
let d3 = 0xC.8p1
// 0xC.8p1 == 0xC.8 * 2¹ == 12.5 * 2 == 25.0
3.数字格式
数字可以增加额外的格式,使它们更容易阅读
(1)可以增加额外的零 0
let money = 001999 // 1999
let money2 = 001999.000 // 1999.0
(2)可以增加额外的下划线 _ ,以增强可读性
let oneMillion1 = 1_000_000 // 1000000
let oneMillion2 = 100_0000 // 1000000
let overOneMillion = 1_000_000.000_001 // 1000000.000001
说明:增加了额外的零 0和下划线 _ ,并不会影响原来的数值大小
六、类型转换
两个类型不相同的数值,是不能直接进行运算的
示例1:
注意:下面的语句是错误的
let num1: UInt8 = 10;
let num2: Int = 20;
let sum: Int = num1 + num2
第3行会报错说明:
报错原因:num1是UInt8类型,num2是类型Int,类型不同,不能相加
解决方案:将num1转为Int类型,就能与num2进行相加
下面的语句是正确的
let sum: Int = Int(num1) + num2
示例2:
注意:下面的语句是错误的
let num1 = 3 // num1是Int类型
let num2 = 0.14 // num2是Double类型
let sum = num1 + num2
第3行报错说明:
报错原因:num1是Int类型,num2是类型Double,类型不同,不能相加
解决方案:将num1转为Double类型,就能与num2进行相加
下面的语句是正确的
let sum = Double(num1) + num2
注意:
下面的写法是正确的
let sum = 3 + 0.14
3和0.14相加得到结果3.14,等赋值以后,编译器才会自动推断出sum是Double类型
七、类型别名
可以使用typealias关键字定义类型的别名,跟C语言的typedef作用类似
typealias MyInt = Int // 给Int类型起了个别名叫做MyInt
原类型名称能用在什么地方,别名就能用在什么地方
声明变量\常量类型
let num: MyInt = 20
获得类型的最值
let minValue = MyInt.min
类型转换
let num = MyInt(3.14) // 3
李洪强iOS开发Swift篇—03_字符串和数据类型的更多相关文章
- 李洪强iOS开发Swift篇---12_NSThread线程相关简单说明
李洪强iOS开发Swift篇---12_NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThre ...
- 李洪强iOS开发Swift篇---11_变量&常量&元组
李洪强iOS开发Swift篇---11_变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对 ...
- 李洪强iOS开发Swift篇—10_方法
李洪强iOS开发Swift篇—10_方法 一.简单说明 跟其他面向对象语言一样,Swift中的方法可以分为2大类: (1)实例方法(Instance Methods) 在OC中,实例方法以减号(-)开 ...
- 李洪强iOS开发Swift篇—09_属性
李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...
- 李洪强iOS开发Swift篇—08_函数(2)
李洪强iOS开发Swift篇—08_函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 1 func sum(num1 ...
- 李洪强iOS开发Swift篇—07_函数
李洪强iOS开发Swift篇—07_函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 ...
- 李洪强iOS开发Swift篇—06_流程控制
李洪强iOS开发Swift篇—06_流程控制 一.swift中的流程控制 Swift支持的流程结构如下: 循环结构:for.for-in.while.do-while 选择结构:if.switch 注 ...
- 李洪强iOS开发Swift篇—05_元组类型
李洪强iOS开发Swift篇—05_元组类型 一.元组类型介绍 1.什么是元组类型 元组类型由 N个 任意类型的数据组成(N >= 0),组成元组类型的数据可以称为“元素” 示例: let po ...
- 李洪强iOS开发Swift篇—04_运算符
李洪强iOS开发Swift篇—04_运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运 ...
随机推荐
- redux学习笔记
中文api:http://cn.redux.js.org/docs/react-redux/troubleshooting.html 3.6 Reducer Store 收到 Action 以后,必须 ...
- Linux操作系统搭建JDK开发环境
在Linuxer系统中,jdk环境常常是必需的,下面介绍下Oracle官方JDK安装方式 第一步:去jdk官网下载对应版本的JDK安装文件 第二步:解压文件,修改文件名 $ sudo mkdir /u ...
- 20151210jquery进阶 代码备份
$(function () { /*$('form input[type=button]').click(function() { $.ajax({ type:'POST', //url:'http: ...
- nyoj89 汉诺塔(二)
题目网址 :http://acm.nyist.net/JudgeOnline/problem.php?pid=89 汉诺塔问题的经典结论: 把i个盘子从一个柱子整体移到另一个柱子最少需要步数是 2的i ...
- Tomcat中JSP引擎工作原理
http://blog.csdn.net/linjiaxingqqqq/article/details/7164449 JSP运行环境: 执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有W ...
- C++ -windows与unix路径分隔符
文件路径中通常使用正斜杠和反斜杠 在Windows中 C++中“\\”是一种转义字符,他表示一个‘\’,就像\n表示回车一样.所以C++中的路径名: D:\matcom45\doc\users\_th ...
- Win7/Win8.1预订升级Win10失败临时解决方案
很多Win7/Win8.1用户在今天凌晨通过微软官方推送的方式升级Win10,但这一过程中遇到了“安装失败”等问题,导致升级无法进行.鉴于这种情况,很多用户选择进入Windows10预下载安装文件夹打 ...
- C++ socket开发1
服务端 setlocale(LC_ALL,"Chinese-simplified"); WORD wVersionRequested; WSADATA wsaData; int e ...
- html-----014---统一资源定位器
HTML 统一资源定位器 URL 可以由单词组成,比如 “w3school.com.cn”,或者是因特网协议(IP)地址:192.168.1.253.大多数人在网上冲浪时,会键入网址的域名,因为名称比 ...
- C语言链表全操作(增,删,改,查,逆序,递增排序,递减排序,链式队列,链式栈)
一,数据结构——链表全操作: 链表形式: 其中,每个节点(Node)是一个结构体,这个结构体包含数据域,指针域,数据域用来存放数据,指针域则用来指向下一个节点: 特别说明:对于单链表,每个节点(Nod ...