swift
1.打印
print /println
例:print("hello swift") 注意:swift可以不用分号
1.常量:程序运行期间不可改变的量 修饰符 let 例:let number = 20
2. 变量:程序运行期间可以改变的量 修饰符 var 例:var time = 30 time = 40 (可以改变)
2.标识符
1.由数字 字母 下划线 组成
2.不能以数字开头
3.不能与系统关键字重复 `系统关键字`
4.全面支持Unicode编码
附加:调用emoj 表情 control + command + 空格
例:let `let` = 100 (如果和系统命相同的话需要🏠`系统命`) let 希望 = 20 var 😢 = 40
3.数据类型
1.整形(若没有修饰类型 默认是Int)
1.Swift Int
声明整形的常量或者变量 修饰符 标识符 : 类型 = 初始值 例:let num : Int = 20
2.浮点型(如果没给定类型修饰 默认是Double)
单精度 Float 精确度<=6位 例:let float : Float = 3.1345678987689765
双精度 Doublec 精确度<=15位 例:var double : Double =9.45687654568762893783937
注意:Swift 中严格的类型审核,必须保证类型匹配,才能运算 例:double + Double(float)
3.字符和字符串(String)
例:let char : Character = "a"
var dashabi : String = "dashabi"
var 修脚 : NSString = "修脚"
字符串的拼接:dashabi + "123456789" (dashabi += "12345678odasfdf")
不同类型的字符串拼接,需zhuan as 强转修饰符
dashabi + (修脚 as String)
字符串调用方法用点调用(Swift 中没有[])
var saodong = "saodong"
saodong.uppercaseString //大写 saodong.lowercaseString //小写
字符串长度
saodong.characters.count
其他类型转字符串
1.插入语法 例:let num : Int = 20 "\(num)"
2.String() Xcode 6.4无法使用
String(num)
saodong == dashabi
Bool类型
var xiaosaodong : Bool = true
可选类型 ? (!强制解析,把不一定的值肯定)
var saoder : String? = "11"
print(sadder) !强制解析,把不一定的值肯定
例:saoder! + "aaa"
元组类型 (元组有多个参数)
例1:var zhaodeyu = ("zhaodeyu", 100, "性别不详")
zhaodeyu.0
zhaodeyu.1
zhaodeyu.2
例2: var xiaozhao = (name : "xiaozhao", age : 100, sex : "nv")
xiaozhao.name (xiaozhao.0)
xiaozhao.age (xiaozhao.1)
xiaozhao.sex (xiaozhao.2)
例3: let (name, age, sex) = xiaozhao
name
age
sex
4.数组类型
数组初始化: Array或者 [SomeType]
1>空数组的初始化 例:let array : [Int] = []
使用初始化方式 let arr = [Int]()
使用初始化 let ar = Array()
2> 非空数组 直接使用非空的数组 例:let 数组 : [Int] = [2, 1, 3, 4, 5, 6, 8]
使用初始化方法
let myArray = [Int](count: 5, repeatedValue: 1)
var myArr = Array(arrayLiteral: 1, 2, 3, 4, 5)
判断是否位空 :myArr.isEmpty arr.isEmpty
数组添加元素
myArr.append(11)
myArr += [22]
插入元素
myArr.insert(99, atIndex: 0)
取值
myArr[0]
修改
myArr[1] = 30
替换[0,3] 0到3
myArr[0...3] = [1, 2, 3, 4]
删除
myArr.removeLast()
myArr.removeAtIndex(0)
myArr.removeAll()
5.字典
字典的初始化方式
let dic = Dictionary()
var dictionary = ["name" : "修 睿"
字面量判断key值是否存在,如果存在,修改value否则添加
dictionary["sex"] = "女"
dictionary.updateValue("男", forKey: "sex")
dictionary
字典的删除
dictionary.removeValueForKey("name")
字典通过键值下表移除Key-Value
let index = dictionary.indexForKey("sex")
dictionary.removeAtIndex(index!)
dictionary
Swift的逻辑判断
if...else
例:if 1 > 2 {
} else {
}
Switch...case
注意:1.不用写break,对应有一个falthrough
2.填入的开关,不再知识整形的表达式可以是字符串
3.case的条件可以不是固定的值,是个区间
let abc = 30
switch abc {
case 10:
print("10")
case 30:
print("30")
}
var nameArr = ["zhangsan", "lisi"]switch nameArr[0] {
case "zhangsan":
print("zhangsan")
}
[0, 3] 0 <= x <= 3 0...3
[0, 4) 0 <= y < 4 0..<4
例:let score = 90 {
case 0..<60:
print("不及格")
case 80..<100:
print("优秀")
}
6.循环
while
var i = 10
while i < 100 {
i++
}
do..while (repeat..while)
repeat {
i++
} while i < 200
for循环
for var i = 0; i < 100; i++ {
i++
}
7.函数
func 函数名 (参数列表)->返回值{ 函数体 }
func printHello() {
print("Hello, Swift!")
}
printHello()
有参单返回 inout修改
func sumNumber(inout a: Int, b: Int) ->Int {
return a + b
}
var a = 100
sumNumber(&a, b: 20)
有参无返回
func printName(name: String) {
print("名字是" + name)
}
printName("小明")
无参单返回
func nameString() ->String {
return "席主席"
}
nameString()
有参数多返回
func returnStudent(name: String, age: Int, sex: String) ->(name: String, age: Int, sex: String) {
return (name, age, sex)
}
var (name1, age1, sex1) = returnStudent("小赵", age: 12, sex: "男")
无参数多返回
func moreString() ->(nameMore: String, age: Int) {
return ("赵永洪", 22)
}
moreString()
/******冒泡排序*******/
var maopaoArr = [1, 2, 4, 2, 6, 0, 7]
for var i = 0; i < maopaoArr.count; i++ {
for var j = 0; j < maopaoArr.count - 1; j++ {
if maopaoArr[j] > maopaoArr[j + 1] {
var temp:Int
temp = maopaoArr[j]
maopaoArr[j] = maopaoArr[j + 1]
maopaoArr[j + 1] = temp
}
}
}
print(maopaoArr)
闭包 匿名函数 格式:{(参数列表) ->返回值类型 in 代码段}
let block = {(str : String) ->String in
return str
}
block("a" + "b")
8. 类和结构体
相同点: 1.都包含属性和方法, swift的结构体与OC的结构体都有很大的区别
2.都包含构造器方法
不同点: 1.类可以被继承,结构体不能
2.类包涵析构器,结构体没有
1.类
特点:
两者不能同时存在
wiliest 和 didset
1.属性可以直接赋初值
2.属性可以不确定
例:var name : String?
var age : Int?
器方法 相当于以前的 alloc init
例:init(name : String, age : Int) {
self.name = name
self.age = age
}
func printAge() {
print(self.age!)
}
析构器
deinit {
// 释放资源
//监听 代理
}
let person = Person (name: "zhao", age: 56)
person.printAge()
2 结构体
例:struct Car {
var carName : String?
var carNumber : Int?
init(carName : String, carNumber : Int) {
self.carName = carName
self.carNumber = carNumber
}
func printName() {
print(self.carName!)
}
}
总结
Class Student : Person {
var sex : String?
//重写父类的初始化方法
override init(name : String, age : Int) {
//super的关键字
super.init(name : name, age : age)
}
init(studentName : String, age : Int, studentNumber : Int, studentSex : String) {
super.init(name : StudentName, age : age)
self.sex = studentSex
}
//class修饰符的方法,就是父类的方法
class fun printName(name : String) {
print(name)
}
}
Student.printName("字符串")
协议,protocol 协议名 {}
注意:1.如果类有继承关系,在所继承的类后面以逗号分隔去签协议
2.若果类没有继承关系,在冒号之后签订协议
例1:
protocol personDelegate {
fun change() ->String
}
例2:
class teacher : Person, PersonDelegate {
func change() ->String {
return "name"
}
}
网友评论