iOS开发Swift篇—(三)字符串和数据类型

一、字符串

字符串是String类型的数据,用双引号""包住文字内容  let website = "http://www.github.com"

1.字符串的常见操作

(1)用加号 + 做字符串拼接

let scheme = "http://"

let path = “www.github.com”

let website = scheme + path

// website的内容是”http://www.github.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

 

转载于:https://www.cnblogs.com/zengshuilin/p/5766656.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux查看xml文件的配置,3、kvm虚拟机日常管理与配置

KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。1. 查看KVM虚拟机配置文件及运行状态(1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/autostart目录是配置kvm虚拟机开机自启动目录。(2) virsh命令帮助# virsh -help或直接virsh命令和,再执行子命令。如下…

hdu5726-GCD-ST表+二分

先用st表处理出所有l-r的GCD值&#xff0c;然后二分求得这些值一共出现了多少次。 1 #include<bits/stdc.h>2 3 #define inf 0x3f3f3f3f4 5 const int maxn100000;6 7 using namespace std;8 9 typedef pair<int,int> P;10 11 int l,r;12 13 int icase;14 15 int t…

linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?

在桌面 Linux 世界中&#xff0c;最常用的术语之一就是 桌面环境(Desktop Environment)(DE)。如果你是 Linux 的新手&#xff0c;你应该了解一下这个经常使用的术语。什么是 Linux 中的桌面环境?桌面环境是一个组件的组合体&#xff0c;为你提供常见的 图形用户界面(graphical…

redhat linux 安装ftp服务,RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器

本文以RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器。安装服务器程序程序下载地址&#xff1a;&#xff0c;目前最新版本为2.0.3&#xff0c;源程序文件名为vsftpd-2.0.3.tar.gz。1&#xff0e;安装之前的准备&#xff1a;安装之前我们应该看看用户“nobody”和目录…

Hadoop 2.5.1集群安装配置

本文的安装只涉及了hadoop-common、hadoop-hdfs、hadoop-mapreduce和hadoop-yarn&#xff0c;并不包含HBase、Hive和Pig等。 http://blog.csdn.net/aquester/article/details/24621005 1. 规划 1.1. 机器列表 NameNode SecondaryNameNode DataNodes 172.16.0.100 172.16.0.…

linux杀掉进程后总是重启,Linux监控进程,进程关闭自动重启方案

Linux监控进程&#xff0c;进程关闭自动重启方案corntabshell脚本检测进程这个方案简单不用额外安装软件。缺点是存在间隔&#xff0c;corntab设置1秒执行一次shell脚本也是存在间隔的#!/bin/bash#author smallForest#email 1032817724qq.comproc_name"xiaofei.php" …

C语言atan2()函数:求y/x的反正切值

头文件&#xff1a;#include <math.h>atan2() 函数用于求 y / x 的反正切值。其原型为&#xff1a; double atan2(double y, double x);【参数】x为坐标的X轴值&#xff0c;y为坐标的Y轴值。如果 x 和 y 的值都为 0&#xff0c;将会导致错误。atan2() 求坐标 x 和 y 的…

Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...

本文介绍如何打包Qt程序&#xff0c;使其在没有安装Qt的系统可以运行。默认前提&#xff1a;另外一个系统和本系统是同一个系统版本。1&#xff0c;编写导出依赖包的脚本copylib.sh#!/bin/bashLibDir$PWD"/lib"Target$1lib_array($(ldd $Target | grep -o "/.*&…

ubuntu14.04 x86编译upx 3.92 及so加固

的参考文章&#xff1a; http://www.cnblogs.com/fishou/p/4202061.html 1.download upx和所依赖的组件 upx3.92&#xff1a;https://www.pysol.org:4443/hg/upx.hg/archive/tip.tar.gzLZMA4.43&#xff1a;http://nchc.dl.sourceforge.net/project/sevenzip/LZMA%20SDK/4.43/l…

linux磁盘分区面试题,一套Linux面试模拟题及答案

一、填空题1、查找在当前目录中文件属主具有读、写权限&#xff0c;并且文件所属组的用户和其他用户具有读权限的文件&#xff0c;使用的命令是( find . -perm 644 )&#xff1b;查找在/tmp目录中&#xff0c;属主是benet用户的文件( find /tmp –user benet)&#xff1b;删除当…

jQuery中的渐变动画效果

jQuery中的渐变动画效果jQuery中的渐变动画效果转载于:https://www.cnblogs.com/DreamDrive/p/5780292.html

linux vi编辑器 Ctrl s,Linux命令-----vi/vim编辑器

也可建立vi到vim的符号连接(即实际调用的是vim)# mv /bin/vi /bin/vi.bak# ln -s /usr/bin/vim /bin/vi进入vi的命令&#xff1a;vi 直接进入编辑并创建新文件vi filename 编辑文件(不存在则创建文件)&#xff0c;并将光标置于第一行首vi n filename 打开文件&#xff0c;并…

insert sort

插入排序将数据分为前面有序部分和后面无序部分,取无序部分的第一个元素插入到有序序列中.注意与选择排序的区别. // insert sortvoid insertionSort(int arr[], int length) {int i, j, tmp;for (i 1; i < length; i) {j i;while (j > 0 && arr[j 1] > ar…

关闭linux系统中读写页缓存,Linux文件系统FAQ

Linux文件系统FAQ2010年03月25日最近实验室搞了一些列讲座&#xff0c;阿福师兄关于文件系统的讲座帮我弄清楚了一些以前不清楚的问题&#xff0c;以问答的形式对文件系统常见的问题进行了总结。Q: 文件系统如何看待底层物理块设备&#xff1f;文件系统把块设备简单的看做线性的…

《JS权威指南学习总结--6.1原型》

内容要点&#xff1a; 一.每一个JS对象&#xff08;null除外&#xff09;都和另一个对象相关联。"另一个"对象就是我们熟知的原型&#xff0c;每一个对象都从原型继承属性. 二.所有通过对象直接量创建的对象都具有同一个原型对象&#xff0c;并可以通过JS代码Object.…

linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...

本文章总结了如何手动、自动修改本地用户密码及远程机器的用户密码。对做自动化测试提供了自动修改用户密码的原理及方法。修改本地用户密码&#xff1a;1、交互配置本地用户&#xff1a;以root用户&#xff1a;passwd Changing password for user dewang.New UNIX password:BA…

Visual Studio提示Bonjour backend初始化失败

Visual Studio提示Bonjour backend初始化失败 错误信息&#xff1a;The Bonjour backend failed to initialize, automatic Mac Build server discovery will not be available.这是由于Windows下的Bonjour服务没有开启&#xff0c;需要到服务管理中&#xff0c;开启该服务&…

104 规约模拟器linux,变电站自动化系统调试装置 Substation automation system debugging device...

摘要&#xff1a;本发明涉及一种在电力系统中应用的变电站自动化系统调试装置,其结构为电源与触电保安器相连,触电保安器分别与平板电脑,标准规约模拟器,交换机及调制解调器相连;平板电脑通过多功能接口盒与交换机和电度表相连;通讯管理机分别与调制解调器,交换机及电度表相连.…

Unity3d 札记-Let's try shooting 知识点汇总

1\LineRenderer LineRenderer是用来在3d场景画直线的一个工具。 public LineRenderer laserline;laserline.SetPositon(0,startposition);laserline.SetPositon(1,endposition);//设置结束位置startpositon,endposition均为Vector3 ,空间三维坐标 laserline.enabled(true); las…

c语言如何控制电脑串口,C语言直接驱动硬件实现PC机的串口操作

熟悉C语言的人都知道&#xff0c;虽然C语言是一门高级语言&#xff0c;拥有很多高级语言的特性&#xff0c;但是作为一种由低级语言到高级的过渡&#xff0c;他又继承了很多低级语言的特性&#xff0c;那就是可以直接操作计算机的硬件设备。本人近日在学习有关PLC网络方面的知识…