准备:
1 在 swift中导入头文件只需要imPort就可,无需“”和<>
2 在Swift中自定义的文件都不要导入头文件可以直接使用
3 在swift中代码不用再写分号
例如:
一 常量和变量
A 定义变量的实质是开辟内存空间
// C 中:int a = 1;
let a = 1 //let表示是一个常量,相当于const修饰
var b = 2 // var 表示变量,
b = 5 //运算符的两边要空格都要空格,不加空格都不加空格(保持对称0.0)
var c = 2.36 //在swift中数据类型是自动腿短数据类型的,根据等号右边的的值判断是什么数据类型复制给等号左边的变量(常量)
// 指明数据类型的定义:在变量后面加上冒号(:)在冒号后面写上数据类型 。例下
var d:Int = 4
B 在C和OC中变量名命名规则:由数字,下划线,字母组成,其中数字不能开头,可以使用$(C和OC都是使用ASCII码编码方式)
在Swift中什么都可以当做变量名,使用的是Unicode的编码方式
var 你好 = "O(∩_∩)O~"
var O(∩_∩)O~ = "来"
二 数据类型
//强制类型转换:想要转换的类型()
var f:Float = 25.36
var g:Int = 2
var h:Int = g + Int(f)
print(h)--->27
//创建一个Bool类型 在这的Bool值为true或fa
var j:Bool = true //print(j)为true
三 字符串
//a 创建一个空的字符串
var str_empty = ""
var str1_empty = String()
//b 字符串的拼接
var str1 = "你好"
var str2 = "shuai"
let str3 = str1+str2
print(str3) //输出的为“你好shuai”
//c 计算字符串的长度
print(str3.characters.count)
//d 在swift中没有格式化输出符,所有需要原样输出都使用\(),在()内写上需要输出的内容
print("a = \(a)")
//f 在swift中方法的调用使用点语法
// 在swift中if语句的()不用写
if str_empty.isEmpty
{
print("str_empty是空字符串")
}
//g 大小写的转换
var str4 = "Hello HandsomeBoy"
str4.uppercaseString //大写
str4.lowercaseString //小写
四 数组
//C:数组只能存放同一种类型的数据
//OC:数组只能存放对象,可以不是同一类的对象
//swift:在指定的数组元素类型的情况下只能存放同一种类型的数据 例下:
var array3:Array<Int> = [1,2,8]
//用var修饰的就是可变数组
//let修饰的就是不可变数组
//在swift中数组用[]的形式表示,也可以用 Array()初始化
var array = [1,2,3]
var array1 = [1,2.2,3]
var array2 = [1,"afhg",3]
//还是通过下标取元素
print(array[0])
//完整写法
let array4:Array<Int> = [1,2,3,4]
//不可变数组不仅仅是数组本身的长度不能改变 ,而且数组里面的元素也不能改变
//array4[1] = 8
//数组的常用方法
//添加
array.append(4)
//插入
array.insert(5, atIndex: 4)
//删除
array.removeAtIndex(4)
//范围性取值
array[0...2] = [4,4,4]
print(array)
//遍历 for没有括号
for value in array{
print(value)
}
五 元组
//元组就是元素的组合,在swift中用来修饰一个复杂的变量,类似于C中的结构体
var person = ("xiaohuang",25,"guangzhou")
print("person的年龄\(person.1)")
//使用元组同时对多个变量进行赋值
//如果在元组中某个值不想要使用下划线("-")代表
//var name = "xiaohuang"
//var address = "gaungzhou"
var (name,_,address) = person
print(name) //--->"xiaohuang"
print(address) //--->"guangzhou"
六 字典
//<>里面写的是键值对的类型
var dic:Dictionary<String,String> = ["k1":"v1","k2":"v2","k3":"v3"]
//在swift中的常用方法
//修改:在swift中通过中括号的形式找到key所对应的值
dic["k1"] = "V1"
dic.updateValue("value1", forKey: "k1")
print(dic)
//删除
dic.removeValueForKey("k3")
print(dic)
//获取字典的keys和values
//dic.values //取出来的是swift里面的数据格式,不能直接使用
Array(dic.values)
七 流程控制
var k = 1
if 1 == k
{
print("k和1相等")
}
//swift
//1 必须要有default
//2 每个case里面至少要写一句代码
//3 每个case里面自带break
var l = 4
switch l
{
case 1:
print("1")
case 2,4: //两个case情况一样
print("2")
// fallthrough 表示向下贯穿一个case
// fallthrough 要写在每个case的最后,因为遇到fallthrough就会向下贯穿
fallthrough
case 3:
print("3")
default:
print("default")
}
//case可以是一个范围,而且可以交叉,如果两个case交叉只走第一种情况
var m = 10
switch m
{
case 1...15:
print("1...15")
case 5...20:
print("5...20")
default:
print("default")
}
//case还可以双重判定
switch m
{
case 1...15 where l == 4:
print("满足情况")
default:
print("default")
}
八 循环语句
//while和do while和C语言的没有什么区别
//for循环的()不用写
// 1,9,3,6,8,5,4,2 //冒泡排序优化,实现跳出不必要的排序
// 1 判断是否为正确结果
// 2 跳出排序
var arr = [1,9,3,6,8,5,4,2]
for var i = 0;i < 7;i++
{
var flag = 1
for var j = 0;j<7-i;j++
{
if arr[j]>arr[j+1]
{
var temp = 0
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
flag++
}
}
if flag == 1
{
break
}
}
print(arr) // --->(1 2 3 4 5 6 8 9)
9⃣ 枚举
enum Season:String
{
case spring = "春天"
case summer = "夏天"
case autumn = "秋天"
case winter = "冬天"
}
//在枚举变量中要想获取到真实值需要在后面添加一个rawValue
print(Season.summer.rawValue)
⑩ 函数
//函数的语法
/*
func是函数的关键字
func 函数名(参数列表)->返回值类型
{
函数体
}
*/
//1 定义一个函数
func sayHi (name:String)->String
{
return name+" "+"Hello"
}
//2 函数的调用
sayHi("张三")
//3 在swift中通常使用元组返回多个值
func funname()->(a:Int,b:Int)
{
let A = 1,B = 2
return(A,B)
}
funname().a
//4 外部参数名
func personInfo(name:String,age:Int,address:String)->String
{
return name + "\(age)" + address
}
//从Xcode7开始只有第一个参数没有外部参数名
personInfo("啦啦", age: 25, address: "广州")
//在原来的内部参数名前面可以添加一个外部参数名
func personInfo1(Name name:String,Age age:Int,Address address:String)->String
{
return name + "\(age)" + address
}
personInfo1(Name: "牠试", Age: 50, Address: "北漂")
//5 传数值和传地址
//传数字
func changeValue(var num:Int)
{
num++
print(num)
}
var num1 = 3
changeValue(num1)
//传地址(inout关键字可以将实参地址传递给形参)
func changeValue1(inout num:Int)
{
num++
print(num)
}
var num2 = 3
changeValue1(&num2)
print(num2)
//6 函数可以嵌套
func test1()
{
func test2()
{
print("test2")
}
test2()
print("test1")
}
test1()