今天老何与大家分享Swift中的数据类型,从一个大家相对感兴趣的话题聊起吧,随着智能手机与网络的普及,大家都办理了流量套餐,每到月底大家也非常关心有没有流量了?费用是如何被扣掉的?
好,让我们带着问题了解2个概念。
1、数据
数据是信息的表现形式和载体,可以是符号、文字、数字、图像、语音、视频等。
手机/电脑上安装的软件,Word文档、PPT文档,短信、微信,图片、视频等等都是数据。
之所以我们使用手机会有流量费用,是因为发送和接收了数据(如在线听歌、发送微信、查看朋友圈,这些都是走数据流量的,如同用水电一样),运营商是计费的,比如联通(0.0003元/kb),这里提到数据单位kb,来接着看第二个概念。
2、数据单位
数据是有单位的(如尺寸有单位米,厘米、毫米等,它们之间有换算关系,1米=100厘米,1厘米=10毫米),从小到大依次是比特(Bit)、字节(Byte)、千字节(KB)、兆字节(MB)、吉字节(GB)、太字节(TB)......它们之间的换算关系为:
1B=8bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
......
> 比特(Bit):比特是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。
> 字节(Byte):字节是计算机存储容量的基本单位,一个字节由8位二进制数组成,如10011000,在计算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一个汉字。
> 其他KB,MB、GB、TB......每一个级别都是前面的乘以1024。
了解完上面概念后,再回答我们前面的问题,如果你通过手机在线看一个视频,为100M(现在文件都很大,M即MB,按照联通费用标准需换算成KB),那么花费=100Mx1024x0.0003元/KB≈30元,自我感觉hei不hei:),独此三家,别无选择。
OK,进入我们的今天主题“数据类型”
3、数据类型
数据除了有单位,也是有类型的,数据类型是对数据的分类,每种数据类型都具有独特的特征、不同的分配空间(最大位数/字节数不同)与相应的操作功能(举个例子:房子有别墅、住宅、办公楼等分类,产权不一,大小不一,功能不一,但都是房子)
Swift中分成两种数据类型,一是命名类型(命名类型是定义时可以给定特定名称的类型,包括基本数据类型,如String,和其他命名类型,如Array、enum等,这里先介绍基本数据类型,其他命名类型后续将准备相关专题介绍),二是复合类型(包含命名类型和其他复合类型,如元组类型)
一、基本数据类型
/*
1、整数类型:Int,Int8,Int16,Int32,Int64
用来表示一个整数,一般用Int即可
Int*,*用来表示占用的位数,即表示整数值大小范围。
*/
/*
(1)、Int8 整型:一般占1个字节(8位)
取值范围:-128~127(-2^7~2^7-1)
*/
//显式声明:变量名:变量类型
var i8:Int8 = 18
//隐式声明:swift可以根据初始值推断声明的常量或变量的类型,因此不需要定义数据类型
//var i8 = 18000
//print表示输出,里面变量用字符串插值形式输出:\(变量)
print("int i8 的值为\(i8)")
/*
(2)、Int* 整型:一般占*8个字节(*位)
取值范围:*为16,32,64等
同1仅取值范围不同,不在举例。
*/
/*
(3)、Int 整型:
整型一般用这个即可,不指定专门的长度,和平台相关。
*/
var i:Int = 18000
//var i = 18000
print("int i 的值为\(i)")
/*
2、浮点类型:Float、Double
Float单精度浮点类型、Double双精度浮点类型
Swift用浮点型表示实数,简单的说就是带有小数的数据。
*/
/*
(4)、Float 单精度浮点类型 :占4个字节(32位)
*/
//var f:Float = 3.14
var f = 3.14
print("float f 的值为\(f)")
/*
(5)、Double 双精度浮点类型 :占8个字节(64位)
浮点数不指定类型默认代表双精度
*/
var d:Double = 3.14
//var d = 3.14
print("double d 的值为\(d)")
/*
(6)、Character 字符类型
存放单个字符,用双引号引用起来
Swift语言采用了Unicode字符存储,范围大,可包含表情符号等。
*/
var c:Character = "a";
print("Character c 的值为\(c)")
//Unicode表情符号
var cat = "🐱"
print("Character 表情符号 cat 的值为\(cat)")
/*
(7)、String 字符串类型
Character字符型仅表示一个字符,多个字符要用String
*/
var name:String = "zhangsan"
//var name = "zhangsan";
print("String name 的值为\(name)");
/*
(8)、Bool 布尔类型
有两个值:用true和false表示
用作标记或条件判断
*/
//var hasChecked:Bool = true;
var hasChecked = false
print("bool hasChecked 的值为\(hasChecked)");
二、复合类型
这里先介绍元组类型,其他的后续陆续讲解。
/*元组类型
把多个值组合成一个复合值,元组内值可以是任意类型的组合,用,分隔,用()扩起来
元组可以嵌套
*/
//(1)、定义元组变量,后面直接赋值
//系统会自动推断此元组类型为(Int,String,String)
var employee = (26,"zhangsan","工程师")
//通过下标获取不同的值,从0开始
print("employee age is \(employee.0),name is\(employee.1),title is \(employee.2)")
//(2)、定义元组变量,同时定义元组内元素变量,并赋值(key:value)
var employee2 = (age:26,name:"zhangsan",title:"工程师")
//通过每个变量的key获取value
print("employee2 age is \(employee2.age),name is\(employee2.name),title is \(employee2.title)")
//(3)、定义元组变量,同时定义元组内元素变量+类型,再进行赋值
var car:(brand:String,price:Double)
car = ("奔驰",888888.88)
print("car 品牌 is \(car.brand),价格 is\(car.price)")
4、数据类型转换
不同数据类型的数据是可以转换的,分从小转大和从大转小
/* 1、数据类型转换(从小转大)
各类型表数范围由小到大顺序为:
Int8 -> Int16 -> Int32 -> Int64 -> Float ->Double
Swift类型转化从小转大,从大转小都需要显式类型转化(即强制类型转换),
采用目标构造类型方法(),如Int8(a)
*/
var height:Int = 170
var fHeight:Float = Float(height);
print("Int转换成Float的值为: \(fHeight)");
/*
2、数据类型转换(从大转小)
这种转换是存在风险的,且可能导致程序报错
*/
var weight:Double = 23.56
var iWeight:Int = Int(weight)
print("Double 转化成Int的值为:\(iWeight)")
5、变量与常量
最后补充一些知识,之前我们使用的代码格式都为
int i = 18000;
这个是什么呢?实际上是变量定义,格式为:var 变量名:变量类型 = 变量值
/*
一、变量
1、概念:是Swift程序的一个基本存储单元,变量是由一个标识符及一个初始值组合定义。
标识符定义规则为:(程序中的变量、类、函数、方法等名字)
1:必须以字符(unicode字符,包含表情等)、下划线“_”、或“$”符号开头
2:可以包括数字、区分大小写,但不能以数字开头
3:不能使用Swift语言的关键字,例如class、public等(更多见附注1Swift关键字)
变量的值是可以改变的
2、变量定义格式:
var 变量名:数据类型 = 初始值;
例如 var age:Int = 0;
*/
//1,定义变量+数据类型,并初始化(显式)
var score:Int = 200;
//2,定义变量不加数据类型,并初始化(隐式)
var heightf = 180.6;
//3,变量的修改(可多次改变)
var money:Double = 1234.56;
money = 3456.78;
money = 5678.9;
//4,变量的传递修改(从一个变量传递给另一个变量)
var age = 6;
var ageb = age;
//5,变量可在一行可以定义多个,用逗号分开,但尽量每行定义一个,程序可读性高
var v1 = 6,v2 = 9,v3 = "hello"
/*
二、常量
以上定义的所有变量都可以定义为常量,用let关键字修饰,但常量的值是不可以修改的
*/
//6,定义常量,常量不能修改
let PI:Float = 3.1415;
// PI = 3.14159;
print("变量分数值为:\(score),变量身高值为:\(heightf),存款为:\(money),年龄为\(ageb),常量PI为:\(PI)");
6、运行结果
保存程序并运行,结果如下:
附注:
1、Swift关键字
Swift官方使用的特定标识,代表特殊含义,如var,代表定义变量