75142913在线留言
【基础篇】1、常量、变量运算符与数据类型_IOS开发_网络人

【基础篇】1、常量、变量运算符与数据类型

Kwok 发表于:2021-01-29 10:29:16 点击:7 评论: 0

这里直接跳过了swift的环境安装,目前swift只能在苹果电脑上的xcode开发,所以你需要先习一台MAC基础篇1常量变量运算符与数据类型,所有在学习上测试的代码需要使用playground来运行。

swift的变量、变量与数据类型和其它语言差不多,这里简单的过一下即可。但是swift运行的硬件都是基于苹果生态,目前新硬件全都是64位的,所以在某些数据处理上(int)会有一点细节上的不同,将会在下面的代码演示。

 一、基本语法:

import UIKit //导入UIKit 框架用于playground
var myStr = "Hello, World!"//定义一个字符串类的变量(类型推导)
print(myStr)//在控制台打印出来这个变量(控制台用于调试显示结果的)

上面是代码就是swift的基本结构了,我们可以使用 import 语句来引入任何的 Objective-C 框架(或 C 库)到 Swift 程序中。例如 import cocoa 语句导入了使用了 Cocoa 库和API,我们可以在 Swift 程序中使用他们。

Cocoa 本身由 Objective-C 语言写成,Objective-C 又是 C 语言的严格超集,所以在 Swift 应用中我们可以很简单的混入 C 语言代码,甚至是 C++ 代码。

注释、定义变量等还有结束使用的分号(;)和GO、js语言差别不大,所以不做过多的赘述。下面代码演示swift的变量显示声明。

二、swift的变量常量特点:

let `class` = "常量字符串"//class是swift的保留关键字,神奇的是我只需要加一个重音符号(`)也可以使用它做为变量名
let a = 1+ 2//会报错:error: consecutive statements on a line must be separated by ';'如果使用了运算符操作最后也是需要加上分号的(;)
let a= 1 + 2//会报错:error: prefix/postfix '=' is reserved等号与变量名要有一个空格
let a = 1 + 2; //swift等号与变量名之间需要有一个空号,这样的格式是标准的写法(没有最后的分号&+号2端没有空格也是OK的)。

var number: Int = 5 //使用显示声明一个初始值为5的Int类型(整形)变量
let num: Int = 6 //显示声明一个Int常量值为5,后面值不可改变

var num2: Int//只声明变量的类型,并不会像GO语言一样赋初值,如果访问或者打印num2将会报错
num2 = 0 //需要我们手动赋值
var str: String = "上面number的值为:(number),num的值为(num),(number+num2) * num = ((number+num2)*num)"//字符串里拼接变量需要使用(变量名),()表示占位符,可以访问一个值并将其放入新的字符串里(插值)

print(String) 打印:上面number的值为:5,num的值为6,(number+num2) * num = 30

 批量定义变量与常量:

var a = 1,b = 2.2,c = 3,six = "六"//批量定义变量
let d = 4, e = 5.0,name = "张三" //批量定义常量
print(a,b,c,d,e,name,six)//1 2.2 3 4 5.0 张三 六

三、常用的数据类型:

Swift中常用数据类型:首字母大写,Int、Float、Double、Bool、Character、String、Array、Dictionary、元组类型(Tuple)、可选类型Optional

指定数据类型:在常量/变量后面加上冒号(:)和类型名称,和Delphi很像。

不指定数据类型:let 、 var,系统自动推断数据类型,Swift严格要求变量在使用前必须进行初始化。

1、Int 类型:

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

几乎快淘汰的32位平台上,Int和Int32长度相同。

目前主流在64位平台上,Int和Int64长度相同。

除非你需要特定长度的整数,一般来说使用Int就够了。可以通过下面的代码访问到你的硬件Int最大和最小值:

print("当前硬件最大整数为:(Int.max),最小整数为:(Int.min)")

 int里还有Int8、Int16、Int32、Int64及UInt相关的无符号整数。访问大小也是一样的。

2、Float、Double类型:

浮点数是有小数部分的数字,比如 3.14159,0.1 和 -273.15。

浮点类型比整数类型表示的范围更大,可以存储比 Int 类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:

  • Double 表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
  • Float 表示32位浮点数。精度要求不高的话可以使用此类型。

Double精确度很高,至少有15位数字,而 Float 最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。

3、Bool布尔值:

swift里的布尔值只有true 和 false,不会像PHP会把0认为false,大于为的认为true.

4、单个字母Character:

类似GO语言里的byte类型(但Character不能存127以下的整数),所以我们可以使用typealias 来定义一个别名:

typealias Byte = Character
var myChar:Byte ="a"

注意:Character不能创建空串,也就是:var myChar:Character ="" 报错:error: cannot convert value of type 'String' to specified type 'Character'.

5、其它高级的数据类型:

后面会有专门的篇幅来介绍数组、字典等高级好用的类型,这里只讲一个Optional可选类型,定义可选的格式:var num :Optional 或者 var num :Int? //nil

常用格式:?,要紧跟类型:

var num : Int?  //初始值为nil,使用?就是为了告诉编译器,这个值有可能为空nil
num  = 100  //100
/*另一个定义optional类型的方法*/
var str: Optional = nil
str = "neter8.com"

Optional 是一个含有两种情况的枚举,None 和 Some(T),用来表示可能有或可能没有值。任何类型都可以明确声明为(或者隐式转换)可选类型。当声明一个可选类型的时候,要确保用括号给 ? 操作符一个合适的范围。

在确定Optional 有值的情况下,我们可能需要使用到强制解析,在变量后面加一个(!)即可。

//接上面代码
print(str)//打印:Optional("neter8.com")
//使用强制解析打印
print(str!)//打印:neter8.com

//利用??与Optional转换数据

var a = "10" //推导为字符串
var b = Double(a) ?? 0 //如果转换成功返回Double(为Optional类型),否则返回0

使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。

自动解析:

这样可选变量在使用时就不需要再加一个感叹号(!)来获取值,它会自动解析。你可以在声明可选变量时使用感叹号(!)替换问号(?)。来访问可空的实例封装值,这是一个需要谨慎使用的方式,因为进无论是是否有值都会访问封装的合值,这个做为知识点了解一下,未来有使用到的机会再来复习!

6、String字符串类型

快速入门代码:

/* 定义字符串的几种方式 */
var strA = "网络人" //快速推导定义
var strB:String = "neter8.com" //标准定义
var strC = String("郭子")//实例化定义
var strD = String()//实例化
var strE:String //只定义不实例(访问变量会报错)
/* 字符串拼接 */

strA += strB + strC //字符串与字符串之间的拼接

var a:Character = "a" //定义一个单字符
strA.append(a) //在strA后面拼接Character类型的值
strA += String(100) //拼接转为字符串的整型

前面已多次使用了字符串类型,这里主要讲一下字符串自带的几个带用方法:

a、String.isEmpty 判断是否空字符串。

b、String.count 返回字符的长度

c、String.hasPrefix(prefix: String) //strA.hasPrefix("网络人") 返回bool值true

d、String.hasSuffix(suffix: String) 检查字符串是否拥有特定后缀。

e、Int(String) 转换字符串数字为整型。

f、String.utf8、String.utf16 可以通过 for code in unicodeString.utf8 遍历出字符串的utf编码。

g、+拼接字符、+=与数值运算类似在自己的后面累加、==判断字符是否一样、!=判读字串不一样、<逐一比较字符串。

四、运算符与优先级:

和其它编程语言差不多吧~

1、算术运算符

+ 加号 20 + 10 结果为 30

− 减号 20 − 10 结果为 10

* 乘号 20 * 10 结果为 200

/ 除号 20 / 10 结果为 2

% 取余 20 % 10 结果为 0

2、比较运算符

== 等于 (20 == 10) 为 false。

!= 不等于 (20 != 10) 为 true。

> 大于 (10 > 20) 为 false。

< 小于 (20 < 10) 为 true。

>= 大于等于 (20 >= 10) 为 false。

<= 小于等于 (10 <= 20) 为 true。

3、逻辑运算符

&& 逻辑与。|| 逻辑或。 ! 逻辑非。

4、其它运算符:

= 简单的赋值运算 var a = 1

+= 相加后再赋值 a += 1 (a = a + 1)

-= 相减后再赋值 a -= 1 (a = a - 1)

*= 相乘后再赋值 a *= 1 (a = a * 1)

/= 相除后再赋值 a /= 1 (a = a / 1)

%= 求余后再赋值 a %= 1 (a = a % 1)

还有一些位移的这里就不写了,因为我不会用....平时开发也用得不多。以后仔细研究一下吧。。。

5、swift特有的区间运算符:

a.闭区间运算符:1...5 区间值为 1, 2, 3, 4 和 5

b.半开区间运算符:1..< 5 区间值为 1, 2, 3, 和 4(不包括5)

for i int 1...10{
   print("(i)+(i)=(i+i)")
}
//打印:1+1=2、2+2=4、3+3=6...10+10=20

和常用编程语言不一样的是i=0;i<=10;i++简写为1...10了。

6、三元运算符: bool? 执行A : 执行B,语法与其它程序一样。

7、优先级与其它程序也是类似的,先乘除再加减括号里的先计算。

五、保留关键字:

与声明有关的关键字 

class deinit enum extension
func import init internal
let operator private protocol
public static struct subscript
typealias var    

 

与语句有关的关键字 

break case continue default
do else fallthrough for
if in return switch
where while    

 

表达式和类型关键字 

as dynamicType false is
nil self Self super
true _COLUMN_ _FILE_ _FUNCTION_
_LINE_      

 

在特定上下文中使用的关键字 

associativity convenience dynamic didSet
final get infix inout
lazy left mutating none
nonmutating optional override postfix
precedence prefix Protocol required
right set Type unowned
weak willSet    

 

除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:http://www.neter8.com/ios/99.html
标签:常量变量数据类型Kwok最后编辑于:2021-03-11 12:11:37
0
感谢打赏!

《【基础篇】1、常量、变量运算符与数据类型》的网友评论(0)

本站推荐阅读

热门点击文章