Swift学习笔记一:简介和数据类型

一、Swift简介

1.日志输出语句

let say = "hello,swift"

print(say)          //最常用的日志输出语句,可以直观的看见你创造的东西

debugPrint(say)     //可以将推断出的类型添加到输出,例如给字符串内容添加双引号

dump(say)           //通常用于将一个对象的内容,如数组、字典等,转移到标准输出

print(say + "1111") //使用加号,可以将多项内容拼接输出

print("hello world\(say)")


2.在控制台输入类的实例及其属性

class MyClsss

{

    var num = 0

    var age = 13

    func description() {

        print("hi")

    }

}


let mc = MyClsss()

print(mc)           //可以查看到实例的类型信息

dump(mc)            //可以在控制台查看到实例的各个属性的信息

dump(mc.age)        //也可单独查看某个属性的信息




二、数据类型

1.Swift的(Boolean)布尔类型

let hasLogin = true     //布尔类型有两个不同的枚举成员,true和false

let hasRegist = false


hasLogin.hashValue      //布尔值为真的哈希值为1

hasRegist.hashValue     //值为假的哈希值为0


hasLogin.description    //通过常量的描述属性,可以查看常量的布尔值转换为字符串的情况

hasRegist.description


/*

 注意:1.Swift语言中的布尔类型不支持YES和NO

      2.Swift语言不能将整型数值转换成布尔类型,只能对布尔类型进行判断

      3.当对布尔类型进行判断时,需要使用左右大括号,将代码块包括起来

*/


2.Swift的(Int)整型类型

//整型包括有符号整型和无符号整型

var a = 1

var b = 2

var c:Int = 2

var d:Int8 = 3              //定义一个8位的整型变量

var e:UInt = 4              //定义一个无符号的整型变量

//无符号整型和有符号整型的字节长度,和所在平台的原生字长相同。


let minValue = UInt8.min    //通过内部属性min查看他的最小值

let maxValue = UInt8.max    //通过内部属性max查看他的最大值


var f = 5

f.bigEndian                 //通过大端属性,查看低地址可以存放的最高的有效字节数

f.littleEndian              //通过小端属性,查看低地址可以存放的最低的有效字节数

f.byteSwapped               //查看字节顺序交换后的当前整数

f.description               //查看当前整数转换为字符串后的值

f.advanced(by: 1)           //获得当前整数在增加指定数量之后的值

f.distance(to: 8)           //获得当前整数在指定整型数值的差值



3.Swift的(Float)和(Double)浮点类型

var a1 = 1.5

var a2:Float = 2.5          //float表示32位浮点数,精度不高可以使用

var a3 = Float.infinity     //获得指定类型的最大值

var a4:Double = 3.5         //double表示双精度类型的浮点变量,高精度使用

a4 + 3.4

a4 - 0.9

a4 * 2.0

a4 / 4

a4.addProduct(2.0, 4.0)     //将变量的值加上2,然后在乘以4

a4.advanced(by: 1.1)        //将变量的值乘以1.1

a4.distance(to: 16)         //获得变量的值和16的差值


var a5 = 24.0

a5.significand              //获得浮点数值得有效位数

a5.exponent                 //获得浮点数值的指数

a5.binade                   //获得和24.0具有相同符合和指数的浮点数值,且有效位数为1

a5.bitPattern               //获得数值的编码的位模式

a5.description              //查看当前浮点数值转换为字符串后的值

a5.isFinite                 //检查当前的浮点数值是否为有限数值

a5.isInfinite               //检查当前的浮点数值是否为无限数值

a5.isLess(than: 6.0)        //检查当前的浮点数值是否小于6.0

a5.isLessThanOrEqualTo(6.0) //检查当前的浮点数值是否小于或等于6.0

a5.isNaN                    //检查当前的浮点数值是否为非数字

a5.isZero                   //检查当前的浮点数值是否为0

a5.magnitude                //获得当前浮点数的值大小

a5.negate()                 //获得当前浮点数的负值(相反数)

a5.negate()


12.5.rounded(.down)         //将浮点数值转换为整型数值,并舍入到小于或等于源数值的最接近的允许值

-12.5.rounded(.down)


12.5.rounded(.up)           //将浮点数值转换为整型数值,并舍入到大于或等于源数值的最接近的允许值

-12.5.rounded(.up)


12.5.rounded(.awayFromZero) //将浮点数值转换为整型数值,并舍入到幅度大于或等于源数值的允许值,即向远离0的方向舍入

-12.5.rounded(.awayFromZero)


12.5.rounded(.towardZero)   //将浮点数值转换为整型数值,并舍入到幅度小于或等于源数值的允许值,即向靠近0的方向舍入

-12.5.rounded(.towardZero)


12.2.rounded(.toNearestOrAwayFromZero) //将浮点数值转换为整型数值,并舍入到最接近的允许值,如果两个值同样接近,则选择具有较大幅度的值

12.5.rounded(.toNearestOrAwayFromZero)

-12.2.rounded(.toNearestOrAwayFromZero)

-12.5.rounded(.toNearestOrAwayFromZero)


13.2.rounded(.toNearestOrAwayFromZero) //将浮点数值转换为整型数值,并舍入到最接近的允许值,如果两个值相同,则选择偶数

13.5.rounded(.toNearestOrAwayFromZero)

12.5.rounded(.toNearestOrAwayFromZero)


14.0.truncatingRemainder(dividingBy: 3.0)   //以截取的方式,获得浮点数值除以指定值的余数

14.0.remainder(dividingBy: 3.0)             //获得浮点数值除以指定值的余数



4.字符串(String)及对字符(Characters)的遍历

//字符串是一系列字符的集合

let hello = "hello"

let entity = "adadaad"

var hhhh = hello + "," + entity             //使用加号“+”对字符串进行拼接

hhhh += "!"                                 //使用“+=”可以将另一个字符串,追加到当前字符串的尾部

hhhh.characters.count                       //获得当前字符串中的字符数量


let number = 3

var combineStr = "You got \(number) star"

for character in combineStr.characters {

    print(character)

}


hhhh == combineStr                          //通过双等号,判断两个字符串的内容是否相同



5.Swift字符串的使用详解

let intStr = "28"

Int(intStr)                                 //给字符串常量添加类型包裹,可以将字符串强制转换为制定的类型


var message:String = "You got 3 apples"

message.hasSuffix("apples")                 //判断字符串的尾部,是否包含制定的字符串

message.hasPrefix("You")                    //判断字符串的头部,是否包含制定的字符串

message.uppercased()                        //将字符串转换为大写模式

message.lowercased()                        //将字符串转换为小写模式

message.capitalized                         //将字符串中的单词的首字母,转换为大写模式

message.isEmpty                             //判断字符串是否为空

message.components(separatedBy: " ")        //将字符串按照指定的内容进行分隔,并返回一个数组

message.caseInsensitiveCompare("You got 3 apples").rawValue     //将两个字符串进行比较,并且不区分大小写

message.caseInsensitiveCompare(message.uppercased()).rawValue   //将当前字符串和大写后的字符串进行比较,并且不区分大小写

message.caseInsensitiveCompare("You got 3 apples.").rawValue

message.contains("apples")                  //判断字符串是否包含另一个字符串

message.distance(from: message.startIndex, to: message.endIndex) //判断字符串中的两个索引之间的距离

message.lengthOfBytes(using: .utf8)         //获得字符串在指定编码模式下的字节长度

message.range(of: "got")?.lowerBound        //分别获得指定字符串,在当前字符串中的范围的起点和结束点,两个结果都是索引类型

message.range(of: "got")?.upperBound


"北京".applyingTransform(StringTransform.toLatin, reverse: false) //获得中文字符串的拼音和声调


message.append(".")                         //除了使用加号,也可以使用内部方法,在字符串的尾部追加其他内容

message.append("aaaaaaddddddd")

message.insert("!", at: message.endIndex)   //使用插入方法,可以往指定的位置插入特定的字符串

message.insert(contentsOf: "hi,".characters, at: message.startIndex) //使用插入方法,往字符串的头部插入一些字符


let index = message.index(message.startIndex, offsetBy: 3) //获得从字符串的头部开始,向后移动3位之后的位置

print(message[..<index])


let starIndex = message.index(message.startIndex, offsetBy: 14)

let endIndex = message.index(message.endIndex, offsetBy: -17)

let range = Range<String.Index>(starIndex ..< endIndex) //创建一个指定起始位置和终止位置的索引区域

print(message[range])

message.replaceSubrange(range, with: "stars") //将指定索引区域的字符串进行替换

message = "i have 5 stars and you have 5 stars too."

message.replacingOccurrences(of: "stars", with: "apples")


var title = "interactive tutorials for xcode and swift"

let starIndexTitle = title.index(title.endIndex, offsetBy: -16)

let endIndexTitle = title.index(title.endIndex, offsetBy: -6)

let rangeTitle = Range<String.Index>(starIndexTitle ..< endIndexTitle)

title.removeSubrange(rangeTitle)                //从字符串中删除指定索引区域的内容

title.removeAll()                               //删除字符串中的所有内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值