Swift基础知识_01


import Foundation

// 1.介绍swift的特点
// a.语句结束后可以不用加分号
// b.访问对象的属性和方法都用点语法

// 2.变量和常量
// a.常量用 "let"关键字修饰,不可修改
 let num1 = 12

// b.变量用 "var"关键字修饰,可以修改
   var num2 = 3
   num2 = 6
print("num1 = \(num1)")
print("num2 = \(num2)")

// 3.显示标注数据类型
//注意:如果要显示某个数的类型,要在变量名后加:(类型名),类型名的首字母都是大写
//swift中的基本数据类型:Int/Double/Float/Character/String/Bool
//字符串和单个字符都用""
//Bool的值是true和false

// 2.变量常量的定义
//定义变量
var age = 10
age = 11

//定义常量
let gender = "男"


// 3.显示标注类型
var yanHuaAge: Int = 13

var yanHuaWeight: Float = 50.00

// swift中的基本数据类型
//Int/Double/Float/String/Character/Bool

let yanHuaGender: Bool = true
//注意:swift的bool类型的数据时true和false

//注意:swift中的字符和字符串都用双引号,但定义了一个字符型变量只能赋值为一个字符
//字符
let yanHuaGender1: Character = "g"
//字符串
let yanHuaGender2: String = "gg"


// 4.数组
//常用数组样式
var array1 = [1,2,3,4]
var array2 = ["ddd","dfdsawae"]
var array3 = [1,"ddd",3]

//其他几种形式
var array4: Array<Int> = [1,234,4,6]
var array5: Array = ["df","dfeww"]
var array6: [String] = ["fdwew3","1232"]

//数组为空
var array7 = [Bool]()
var array8 = Array<Int>()

//增
array1.append(534)

array1.insert(1223, atIndex: 0)

array1 += [23,3222]
print(array1)


//删
//array1.removeAll()
array1.removeAtIndex(0)

//改
array1[0]=233222

//查
print(array1[0])


// 5.字典:也用中括号
var dict1 = [
    "key1":"value1",
    "key2":"valye2",
    "key3":"value3"
]

var dict2 = [
    "key1":12,
    1:"value2",
]

var dict3:Dictionary<Int,String> = [
    1:"value1",
    2:"value2"
]

var dict4:Dictionary = [
    2:"fd",
    3:2
]

var dict5 = Dictionary<Int,String>()
var dict6 = [Int:String]()

//print(dict5)

//增加或修改
dict5[1]="dfde"
print(dict5)
dict5.updateValue("fdew", forKey: 2)
print(dict5)

//删除
//dict5.removeAll()
dict5.removeValueForKey(1)

//查找
print(dict5[1])

//获得所有的键和值,要进行强转
let allKeys = Array(dict5.keys)
print(allKeys)

let allValues = Array(dict5.values)
print(allValues)



// 6.元组:可以给每个变量取名,便于访问

//方法一:
var result = (404,"Not Found")

//方法二:
var yanHua = (name:"yanHua",age:21,gender:"女")

print(yanHua.name)
//或者
print(yanHua.0)


//方法三
var (name1,age1,gender1) = yanHua

//打印 :print中嵌套变量使用 用"\(变量名)"
print("name:\(name1),age:\(age1),gender:\(gender1)")


// 7.分支语句
var score = 56

//if语句
//注意:判断语句可以加括号也可以不加,不加括号时,判断语句的形式要一致,否则容易出错
//socre> 80:就会报错,要写成 score > 80 或 score>80
if score > 80{
    print("优秀")
}
else if (score > 60) {
    print("及格")
}
else{
    print("不及格")
}


//switch语句

//a.必须有分支满足情况
//b.分支中必须要有操作
//c.不需要break,如果要贯穿,手动添加fallthrough
//d.switch可以进行范围判断

switch score
{
case 60:
    print("")
    
case 70:
    print("")
    
default:
    print("")
    
}


switch score
{
case 0...60:
    print("")
default:
    print("")
}


switch score
{
case 0..<60:
    print("")
default:
    print("")
}


switch score
{
case 0...60:
    score += 20
case var s where s<=60 && s>=50://判断,此时score的值赋给了s,score的值不会改变了,操作的是s
    s += 20
default:
    print("")
}


let point = (2,2)
switch point
{
case (_,_)://"_"代表忽略符,匹配任何数
    print("")
default:
    print("")
}


// 8.循环语句

//不太常用
repeat
{
 print("")
    
}while false

while false
{
    print("")
}

for var i = 0 ; i <= 10; i++ {
    print(i)
}

//最常用
//...:包括
//..<:不包括
for i in 0...10
{
    print(i)
}

//遍历数组
let names = ["shuang","ss","ffeee"]
for name in names
{
    print(name)
}

//遍历字典
let name2 = [
"ju":"de",
"shuang":"shuang"
]

//如果只要key或value,则循环的时候写成(key,_)或(_,value)
for (key,value) in dictionary{
    print("key = \(key),value = \(value)")
}

// 9.函数
//关键字:func

//无参无返回值
//写法一:
func test1(){
    
}
//写法二:
func test2() -> Void
{
    
}

//无参数有返回值
func test3() -> String
{
    return "string"
}

//有参无返回值
func test4( a: Int , b: Int) -> Void
{

     print(a,b)
}

//有参有返回值
func test5(c: String , d: String) -> String
{
    //字符串之间可以直接相加
    return c + d
}

//有参有多个返回值
func test6(e: Int , f: String) -> (Int,String)
{
    return (e,f)
}


// 10.外部参数名、内部参数名

// a.函数默认内部参数名和外部参数名一致
// b.如果要在外部显示一个参数的名,可以手动添加一个外部参数名
// c.第一个参数默认没有外部参数名
// d.参数的内部参数名只能在函数内部使用,外部参数名是在函数调用的时候显示和使用
func test7(shuangBu buShuang: Int){
   
    //buShuang:内部参数名,在函数内部使用
    print(buShuang)
    
}

//shuangBu:外部参数名,在函数外部使用
test7(shuangBu: 7)



// 11.inout参数(实质还是用了C语言的指针来修改变量的值)

//a.参数默认的是let类型,不能修改参数的值
//b.如果要在函数内部修改参数的值,可以把参数修改成var类型
//c.如果要在函数内部修改外部参数的值,可以用inout修改

func test8(inout h: Int)
{
    h = 9
}

var j = 0
print(j)

test8(&j)

//已经修改了j的值
print(j)


// 12.函数的嵌套声明

//switf中函数可以嵌套定义,但是要分使用范围

func test10() {//全局函数
    
    func test11() {//局部函数
        
        func test12() {//局部函数
            
        }
    }
}


// 13.枚举
// 关键字:enum
//此时枚举类型中的值可以是String、Double、Int很多类型,但是要想给枚举值赋值,要在枚举变量后面加类型,如:Int
enum Season : Int{
    case Spring = 4  //0
    case Summer
    case Autumn
    case Winter
}

//取值
//既可以用 枚举名.枚举值
//也可以用.枚举值获取值
var s1 = Season.Spring
s1 = .Summer

//打印值
print(s1.rawValue)



//'!'和'?'
//‘!’:在变量使用的前一步必须赋值,否则使用时会崩溃
//'?':变量使用的时候既可以为空也可以赋值,但要用值时要用‘!’解包


//使用原始值创建枚举变量时需要注意,得到的值是可选择的(包括包),要用'!'解包使用
var s2 = Season(rawValue: 4)
print(s2!)


//与switch配合
switch s2!
{
case .Spring:
    print("春天")
case .Summer:
    print("夏天")
case .Autumn:
    print("秋天")
case .Winter:
    print("冬天")
}


// 14.结构体
//关键字:struct
//注意:类方法只能访问类属性,实例方法只能调用实例属性
struct Person {
    
    //声明属性
    var name: String
    var age: Int
    
    //声明结构体属性(直接用结构体调用)
    //注意:静态变量必须要用'?',值可空的,否则会奔溃
    static var des: String?
    
    //声明方法
    func sayHi(){
        print("name:\(name),age:\(age)")
    }
    
    //声明结构体方法(直接用结构体调用)
    static func sayHello(){
        //此时的self指的是结构体本身(就跟类一样,不能指对象)
        print("des:\(self.des!)")
    }
 
    
}




//创建结构体对象
//注意:构造函数是默认的,如果在结构体中没有自定义构造函数,则系统会默认调用一个构造函数
var p1 = Person(name: "张三", age: 13)
//访问属性
print(p1.age)
//访问结构体属性
Person.des = "wooeooeow"
print(Person.des!)

//访问结构体方法
Person.sayHello()



struct Student {
    
    //声明属性
    var name: String?
    var age: Int?
    var hobby: String?
    var gender: String?
    
    //自定义构造函数
    
    //注意:当自定义构造函数时,会给每个属性赋值,如果自定义方法没有给属性赋值,则应该将属性都声明成可空的
    init(){
        
    }
    
    //有姓名和性别
    init(name: String, gender: String){
        self.name = name
        self.gender = gender
    }
    
    //所有属性都初始化
    init(name: String, gender: String, age: Int, hobby: String){
        self.name = name
        self.gender = gender
        self.age = age
        self.hobby = hobby
    }
}

//创建结构体对象
var s = Student()
s.age = 10
print(s.age!)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值