swift-01-基础语法

最近在学习swift,期间也看了不少教程和大神的博客,最后把笔记放这里,方便查看复习~swift

附上学习资料地址:w3cschool-Swift 教程YungFan大神的简书(推荐看一下,有些知识点总结地简直通俗易懂)安全

1、基础知识

一、swift与oc的区别

  1. 分号:swift不须要末尾添加分号,除非几行代码连写在一行的状况markdown

  2. 空格格式:swift很是注重格式,a = 1b=2 注意等号两边空格的格式必须一致函数

  3. 方法调用:oc中[Person saveCall]; ;swift中person.saveCall相似oc的点语法oop

  4. 头文件:swift不须要导入头文件就能够引用其余类的方法和属性学习

  5. 枚举类型:能够简写,直接.枚举值测试

  6. self:在当前类中访问属性或者方法,能够省略self.spa

  7. 构造函数:oc中[[Person alloc] initWithName:xxx] -> swift中Person(name:xxx)操作系统

  8. #selector:oc中是@selector,swift中是#selector指针

二、类型安全

Swift是一个类型安全(type safe)的语言。
即:用var来声明了一个变量,只能修改对应类型下的值,不能修改数据类型。编译的时候会进行类型检查,不匹配的地方会报错。

var a = 12 
a = "hello"  //定义的是int类型,不能改变类型
复制代码

三、类型推断

用let声明一个常量 或者 用var声明一个变量的时候,在直接赋值的状况下,能够它的省略类型。swift会经过类型推断来选择合适的类型

let a = 100 
let b = 3.14 
let c = "hello" 
复制代码

注意:若是没有给浮点字面量标明类型,swift会自动推断为Double类型:

let a = 3.14159
print(type(of: a))//Double

let b = 3 + 0.14159
print(type(of: b))//Double
复制代码

四、类型别名

与oc用法同样,但关键字使用 typealias来修饰

//声明
typealias abc = Int 
//调用
let a: abc = 100 
复制代码

2、数据类型

一、整型

  • Int(有符号整形:正数、零、负数)
  • UInt(无符号整形:正数、零)

注意事项:

通常不须要设置特定的 Int8, Int16。只写一个 Int,长度与操做系统有关,比如在32位系统上,写一个 Int 就和 Int32 同样。 UInt 也同样

Int8, Int16, Int32, Int64 分别表示 8 位, 16 位, 32 位, 和 64 位的有符号整数形式。 
UInt8, UInt16, UInt32, UInt64 分别表示 8 位, 16 位, 32 位 和 64 位的无符号整数形式。  
复制代码

整数范围:

能够经过 min 和 max 属性来访问每一个整数类型的最小值和最大值:
let minValue = UInt8.min // 最小值是 0, 值的类型是 UInt8
let maxValue = UInt8.max // 最大值是 255, 值得类型是 UInt8

复制代码

二、浮点

  • Double 表明 64 位的浮点数。
  • Float 表明 32 位的浮点数。

注意事项:

Double 有至少 15 位数字的精度,而 Float 的精度只有 6 位。具体使用哪一种浮点类型取决于代码须要处理的值范围。在两种类型均可以的状况下,推荐使用 Double 类型。
复制代码

三、布尔值

Bool,两个布尔常量:true、false

四、字符串&字符

  • 字符串:String
  • 字符:Character,指单字符

代码示例:

//写法1:常量 
let a:Int = 10 

//写法2:swift会进行类型推断,能够省略 
let b = 12 

//写法3:变量,能够修改值 
var c = 20 
c = 25 

let d:Float = 3.14 //指定Float类型
let e = 3.15 //默认Double类型
var f = 3.16 //默认Double类型
f = 3.17 
复制代码

3、字面量

所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,可以直接了当地指出本身的类型并为变量进行赋值的值。好比:

let aNumber = 3         //整型字面量
let aString = "Hello"   //字符串字面量
let aBool = true        //布尔值字面量
复制代码
  • 整型字面量

整型字面量能够是一个十进制、二进制、八进制、十六进制常量

如下都是17的不一样进制表示:
//十进制
let decimalInteger = 17 
//二进制,前缀:0b
let binaryInteger = 0b10001 
//八进制,前缀:0o
let octalInteger = 0o21 
// 16进制,前缀:0x
let hexadecimalInteger = 0x11
复制代码
  • 浮点型字面量

组成:整数部分、小数点、小数部分、指数部分 默认是10进制,也能够用16进制(加前缀0x)

10进制和exp指数

十进制数与 exp  的指数,结果就等于基数乘以 10exp:

1.25e2 意味着 1.25 x 10^2, 或者 125.0 
1.25e-2  意味着 1.25 x 10^-2, 或者 0.0125 
复制代码

16进制和exp指数

十六进制数与 exp 指数,结果就等于基数乘以2exp:

0xFp2  意味着 15 x 2^2, 或者 60.0 .
0xFp-2  意味着 15 x 2^-2, 或者 3.75 .
复制代码

以12.1875为例

let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
复制代码
注意:
数值类型的字面量,能够添加 0 或者 _ 来增长可读性

let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1

复制代码
  • 字符串字面量

字符串型字面量中不能包含未转义的双引号 (")、未转义的反斜线(\)、回车符或换行符。

  • 布尔值字面量

布尔型字面量的默认类型是 Bool。布尔值字面量有三个值,它们是 Swift 的保留关键字:

true 表示真。
false 表示假。
nil 表示没有值。
复制代码

4、常量

一、命名规则:

  • let修饰
  • 字母、下划线开头
  • 区分大小写,算2个变量
  • 可使用简单的 Unicode 字符,如:汉子、表情
let a : Int = 10
let a = 10
let _a = 10
let view : UIView = UIView()
复制代码

二、注意:

  • let修饰的,是不可变的
  • 咱们用let修饰的常量是一个类, 咱们能够对其所在的属性进行修改
  • 常量不能够修改的意思是指针不能够再指向其余对象可是能够经过指针拿到对象,修改其中的属性

5、变量

一、 命名规则:

  • var修饰
  • 字母、下划线开头
  • 区分大小写,算2个变量
  • 可使用简单的 Unicode 字符,如:汉子、表情
var _a = "hello"
var b = "hello"
var B = "hello"
var 你好 = "hello"
复制代码

二、 输出:

print(_a)
print(b)
print(你好)
print(_a,b,你好)
print("见面要说\(_a)")
    
复制代码

三、注意:

  • 咱们不会用var去引用一个类, 也没有必要
  • 为了更加安全,建议先定义常量,若是须要修改再修改成变量

6、特殊运算符

这里只说一个不太常见的:

  • ===!==:测试一个实例的运行时类型和它的编译时类型是否一致
if someInstance.dynamicType === someInstance.self {
    print("The dynamic and static type of someInstance are the same")
} else {
    print("The dynamic and static type of someInstance are different")
}
复制代码
相关文章
相关标签/搜索