注意://代表注释,被注释的代码段将不会被执行
import Foundation
print("1","2","3","4")
//1.输出多个字符串,并用“***”分割,并使用分隔符(\n)换行
print("1","2","3","4", separator: "---", terminator: "\n")
//2.常量,不可以改变,也就是之后不能在进行复制操作
let num = 120
//变量,可以改变
var num2 = 18;
num2 = 10
print(num,num2)
//3.
/*
/*
多行数字允许嵌套
*/
*/
//4.类型安全
let num3: Int = 18
//num3 = 3.14 类型不匹配
var num4: Float = 2.245
num4 = 4
//num4 = Int(4)类型不匹配
//类型推断(根据赋的值推断变量或常量的类型,推断时向范围大的推断)
var num5 = 19
let num6 = 3.14//Double
var char:Character = "x"
var char2 = "d"//String
//5.字面量=笑笑语法=语法糖
var str = String("12345")
var str2 = "12345"
let 二进制 = 0b10101
print(二进制)//21
let 八进制 = 0o11
print(八进制)//9
let 十进制 = 111
print(十进制)//111
let 十六进制 = 0x11
print(十六进制)//17
//6.数据类型转换
let t = 18
let t1 = 2.34
let result = Double(t) + t1//类型转换
print("Double:\(result)")//Double:20.34
let result2 = t + Int(t1)
print("Int:\(result2)")//Int:20
let result3 = String(t)
print("String:\(result3)")//String:18
let result4 = Int("abc")
print(result4)//nil
let result5 = Int("123")//返回值是可选类型 Int?
print(result5)//Optional(123)
let result6 = result5! + 5//解包,可选类型不能直接参与运算,需要解包取出里面包裹的值,再运算
print(result6)//128
//7.布尔值BOOL值
//主要用作判断条件和循坏条件,Swift中不再存在非0及真
var flag = true
print(flag)//true
if false{
print("不执行")
}
/*
while true{
print("死循环")
}
*/
//8.元组 Tuple 主要用来处理当一个函数需要有多个返回值的情况
let tuple = (name:"李四",age:"18",123)
//访问元组的内容
//下标访问
print(tuple.0)//李四
//元素名访问
print(tuple.name)//李四
print(tuple.age)//18
print(tuple.2)//123
/*
func 函数名(参数列表) -> 返回值类型 {
函数体
}
*/
//求和函数
var sum = 0
func sum(num1:Int,num2:Int)->Int{
return num1+num2
}
print(sum(num1: 1, num2: 2))//3
//元组的使用场景
func backVlues(num1:Int,num2:Int)->(Int,Int){
return (num1+num2,num1-num2)
}
let tuple2 = backVlues(num1: 5, num2: 2)
print(tuple2)//(7, 3)
print(tuple2.0,tuple2.1)//7 3
//9.可选类型 Optional,可选类型主要用来处理值可能缺失的情况
var aString:String? = nil//定义了一个可选类型的字符串
let aInt:Int? = nil//定义了一个可选类型的整数
aString = "JingNingShiFan "
print(aString)//Optional("JingNingShiFan ")
//对值为空类型进行解包会崩溃,解包前要判断可选类型是否有值,或者赋值
let newString = aString! + "IOS Class"
print(newString)//JingNingShiFan IOS Class
var sum1 = 0
if aInt != nil{
sum1 = aInt! + 10
}
print(sum1)//0
//10.可选绑定
let str3:String? = "i love"
var str4 = ""
//系统内部帮助解包,不需要手动解析,以后只需要valueString
//如果str3不为空,if 就是true,执行if语句,如果str3为空,if 就是false,不执行if语句
if let valueString = str3 {
str4 = valueString + " teachers"
}
print(str4)//i love teachers
//11.隐式解析类型,要求不需赋值才能使用
let v:Int! = 18
//此时在使用v中的值时不能在使用!解包了,因为已经解包过了
let value = v+12
//12.for循环
//for循环的c语言格式已经被弃用
//使用for循坏输出1-10
//...代表闭区间[1,10]
for i in 1...10 {
print(i)//输出1~10之间的所有数字
}
//没有使用到循环变量i,可用_替换
for _ in 1...10 {
print("Hello Word !")//输出十遍Hello Word !
}
var s = 0
for i in 1...100 {
s = s+i
}
print(s)//5050
//使用for循坏输出1-9
//..<代表闭开区间[1,10)
for var i in 1..<10 {
print(i)//输出1~9之间的所有数字
}
//13.repeat-while循坏
var m = 10
repeat {
m = m+1
print("循环到第\(m)次")//循环到第11次
}while m < 10
//14.字符串
//创建字符串
//字面量形式
let s1 = "字面量格式创建"
print(s1)//字面量格式创建
//使用初始化方法创建
let s2 = String("使用初始化方法创建")//创建出来的是可选类型的
print(s2!)//使用初始化方法创建
//操作字符串的方法和属性
let s3 = "hello WORLD"
//获取字符串的长度
print(s3.characters.count)//11
//字符串的本质是数组,s3.characters获得数组
//大写字符串的方法
print(s3,"->转换为大写",s3.uppercased())//hello WORLD ->转换为大写 HELLO WORLD
//小写字符串的方法
print(s3,"->转换为小写",s3.lowercased())//hello WORLD ->转换为小写 hello world
//字符串的拼接
var s4 = "abc"
s4.append("def")//拼接的内容作用到原串上
print(s4,"\n")//abcdef
let nStr3 = s4.appending(" qommm")//拼接的内容没有作用到原串上而是返回一个新的字符串
print("nStr3:"+nStr3,"\ns4:"+s4)//nStr3:abcdef qommm
//s4:abcdef
//遍历字符串
let s5 = "we are family"
for char in s5.characters {
print(char)//将we are family 的每个字符单个输出
}
//字符串的格式化拼接
for i in 1..<10 {
let str = String(format: "student%02d", i)
print(str)//student01~student09
}