IOS-03 Swift 数据类型与运算符

在 Swift 编程的世界里,深入理解数据类型和熟练运用运算符是构建强大、高效应用的基石。让我们一同开启这场探索之旅。


一、字符串类型(String)


字符串在 Swift 中有丰富多样的操作方式。
首先是字符串的初始化和基本操作:

var name4 = "张小凡"
var text4 = ""
var text41 = String()
var text42 = String(repeating: "a", count: 10)
print(text42)

repeating: 被循环的字符

count:循环次数,所以他输出的是aaaaaaaaaa

多行字符串的输出方式值得注意,以下是两种常见的形式:

var text43 = """
中国
人民
站起来了
"""
print(text43)

var text44 = """
中国\
人民\
站起来了
"""
print(text44)

text43:原格式输出,输出结果带有\n

text44:一行输出

对于字符串中的转义字符和特殊引用,也有特定的处理方式:

var text45 = "\"中国\""
print(text45)

var text46 = #""China"# 
print(text46)

 text45:输出:“中国”

text46 :输出:“China”

类型相加和各种字符串的属性及方法也很实用:

var text51 = "张三"
var age51 = 30
var hello51 = "是个好同志"
//字符串连接
print(text51 + hello51)
print(text51.appending(hello51))
print("\(text51)年龄是:\(age51)51 岁")
//判空
print(text51.isEmpty)
//长度
print(text51.count)
//描述
print(age51.description)
print(text51.debugDescription)
//hash
print(text51.hashValue)

var str5 = "This is a Test"
//转大写
print(str5.uppercased())
//转小写
print(str5.lowercased())
//字符串判断
print("ab" == "ab")
print("ab"!= "ab")
//判断前缀
print("productNum".hasPrefix("product"))
//判断后缀
print("productNum".hasSuffix("product"))

//循环索引,index不是数字
for index in str5.indices {
    print(index, str5[index])
}
//开始索引
print(str5[str5.startIndex])
//从后往前向前输出两个字符
print(str5[str5.index(str5.endIndex, offsetBy: -2)])
//输出最前的字符
print(str5[str5.index(before: str5.endIndex)])

二、整数类型(Int)

整数类型的定义和操作多样且灵活:

var age:Int = 40
var myAge = Int(50)
var a = +9,b = -9
var m = 0b10 // 二进制
var n = 0o7 // 八进制
var k = 0xf // 十六进制
var d = 89_100_39
var price = Int("3")?? 0
var pricel = Int("ff", radix: 16)?? 0

print(Int.random(in: 1...100))
print(Int.random(in: 1..<110))

整数之间的运算和比较操作常见且基础:

var z = 10
var s = 200
print(z+s)
print(z-s)
print(z*s)
print(z/s)
print(z == s)
print(z!= s)
print(z > s)
print(z >= s)
print(z < s)
print(z <= s)

此外,还有取相反数、绝对值等特殊操作:

var x = -21
//取相反数
x.negate()
print(x)

x = -30
//取绝对值
print(x.magnitude)
print(abs(-69)) //不推荐的用法

x = 100
//获取整数及他的余数
let (q,r) = x.quotientAndRemainder(dividingBy: 9)
print(q,r)

//判断正负数
print(x.signum())

//一些常量
print(Int.zero)
print(Int.max)
print(Int.min)

//描述
print(23.description+"asa")
print(23.hashValue)

三、双精度浮点数类型(Double)

双精度浮点数的定义和操作各有特点:

var c = 10.0
var a:Double = 10.0
var b = Double(10)
var d = Double.random(in: 10.0...100.0)
var x = 100.23

其提供了丰富的数学计算方法,如平方根计算、取整等:

//平方根
print(x.squareRoot())
//四舍五入
print(x.rounded())
//向上取整
print(x.rounded(.awayFromZero))
print(x.rounded(.up))
//向下取整
print(x.rounded(.down))
print(x.rounded(.toNearestOrAwayFromZero))
print(x.rounded(.toNearestOrEven))
print(x.rounded(.towardZero))

绝对值和符号的获取也很方便:

x = -1.1
print(x.magnitude)
print(x.sign)
print(Double.zero)
print(Double.pi)
print((23.0).description+"asa")
print((23.1).hashValue)

四、布尔类型(Bool)

布尔类型的使用简单直接:

var x = true
var y:Bool = false
//取反
x.toggle()
//随机数
print(Bool.random())
print(x.hashValue)

五、数据运算符

从一元运算符到三元运算符,涵盖了各种常见的运算形式:

var a = 1
print(-a)
print(1+3)
print(3 > 2? 10 : 20)
var (c,b) = (10,20)

空盒运算符用于处理可空值,区间运算符方便定义范围,逻辑运算符则用于布尔值的组合和操作:

//判空!!!!!
var h:String?
print(h?? "11454")
for index in 1...10{
    print(index,terminator: " ")
}
var j = true
var l = false
print(j && l)
print(j || l)
print(!j)

六、实际应用:计算圆的面积和周长

func calculation_of_circles(){
    print("请输入圆的半径:",terminator: "")
    //一定要做好判空
    var r = readLine()?? "0.0"
    var radius:Double = 0.0
    radius = Double(r)?? 0.0
    
    let area = Double.pi * radius * radius
    let perimeter = 2 * Double.pi * radius
    
    print("半径为\(r)的圆,周长是:\(perimeter.rounded()),面积是:\(perimeter.rounded())")
}

七、全部源码

//
//  string_study.swift
//  StudySwift
//
//  Created by YuJun on 2024/7/20.
//

import Foundation

func string_study(){
    /**
     4.字符串的基本操作
     */
    var name4 = "张小凡"
    var text4 = ""
    var text41 = String()
    var text42 = String(repeating: "a", count: 10)
    print(text42)

    var text43 = """
    中国
    人民
    站起来了
    """
    print(text43)
    //多行原格式输出需要三个引号
    var text44 = """
    中国\
    人民\
    站起来了
    """
    print(text44)

    var text45 = "\"中国\""
    print(text45)
    //#"文字内容"#中间引号不需要转意
    var text46 = #""China"# //输出"China
    print(text46)

    /**
     5.类型相加
     */
    var text51 = "张三"
    var age51 = 30
    var hello51 = "是个好同志"
    print(text51 + hello51)
    print(text51.appending(hello51))
    print("\(text51)年龄是:\(age51)51岁")
    print(text51.isEmpty)
    print(text51.count)
    print(age51.description)
    print(text51.debugDescription)
    print(text51.hashValue)


    var str5 = "This is a Test"
    print(str5.uppercased())
    print(str5.lowercased())

    print("ab" == "ab")
    print("ab" != "ab")

    print("productNum".hasPrefix("product"))
    print("productNum".hasSuffix("product"))

    //indices意思为索引//注意index不是数字
    for index in str5.indices{
        print(index,str5[index])
    }
    //输出开始一个字符和最后一个字符
    print(str5[str5.startIndex])
    //最后一个是不存在的,字符串最后一个往往是空指针就像数组一样
    //print(str5[str5.endIndex])

    print(str5[str5.index(str5.endIndex,offsetBy: -2)])
    print(str5[str5.index(before: str5.endIndex)])

}
//
//  data_type.swift
//  StudySwift
//
//  Created by YuJun on 2024/7/20.
//

import Foundation

func data_type_int(){
    //指定数据类型
    var age:Int = 40
    print(age)
    var myAge = Int(50)
    print(myAge)
    var a = +9,b = -9
    print(a,b)
    var m = 0b10 //二进制
    var n = 0o7 //八进制
    var k = 0xf //16禁止
    print(m,n,k)
    var d = 89_100_39 //实际还是8910039,主要目的是增加可读性
    print(d)
    var price = Int("3") ?? 0 //意思是3可能不是个数字,如果不是数字转化为0
    print(price)
    
    var pricel = Int("ff",radix: 16) ?? 0 //意思是ff转化为16进制,转化不成功为0
    print(pricel)
     
    print(Int.random(in: 1...100)) //输出一个1-100的随机数
    
    print(Int.random(in: 1..<110)) //输出一个1..109的随机数
    
    //运算符
    var z = 10
    var s = 200
    print(z+s)
    print(z-s)
    print(z*s)
    print(z/s)
    print(z == s)
    print(z != s)
    print(z > s)
    print(z >= s)
    print(z < s)
    print(z <= s)
    
    var x = -21
    x.negate()//取相反数
    print(x)
    
    x = -30
    print(x.magnitude) //取绝对值
    print(abs(-69)) //也是取绝对值,不推荐使用
    
    x = 100
    let (q,r) = x.quotientAndRemainder(dividingBy: 9)
    print(q,r) // 输出11 1 意思是100/9=11%1
    
    
    print(x.signum()) // 返回正负数 -1=负数 1=正数 0 = 0
    print(Int.zero) // 常量 0
    print(Int.max) //常量 int的最大值
    print(Int.min) //常量 int 的最小值
    
    print(23.description+"asa") //23的描述,类似于toString
    print(23.hashValue) // 23的hash
    
}

func data_type_double(){
    var c = 10.0
    var a:Double = 10.0
    var b = Double(10)
    print(a,b,c)
    var d = Double.random(in: 10.0...100.0)
    print(d)
    var f = Double.random(in: 10.0..<100.0)
    var x = 100.23
    print(x.squareRoot()) //平方根
    print(x.rounded()) //四舍五入

    print(x.rounded(.awayFromZero)) //下面的基本可以理解为向上取整
    print(x.rounded(.up))

    print(x.rounded(.down)) //下面的都可以基本认为向下取整
    print(x.rounded(.toNearestOrAwayFromZero))
    print(x.rounded(.toNearestOrEven))
    print(x.rounded(.towardZero))
    
    x = -1.1
    print(x.magnitude) // 绝对值
    print(x.sign) //符号 plus = + minus = -
    print(Double.zero)
    print(Double.pi) //常量 pi值
    
    print((23.0).description+"asa") //23的描述,类似于toString
    print((23.1).hashValue)
}

func data_type_bool(){
    var x = true
    var y:Bool = false
    x.toggle() //取反
    print(x)
    print(Bool.random())//随机,独有的
    print(x.hashValue)
}


func data_operator(){
    var a = 1
    print(-a) //一元运算符
    print(1+3) //二
    print(3 > 2 ? 10 : 20) //三
    var (c,b) = (10,20)
    //剩下的都一样基本上
    //+-*/%
    //> < = >= <= == !=
    //空盒运算符
    var h:String?
    print(h ?? "11454") // 判空
    var o:String? = nil
    print(h)
    var p:String? = "a"
    print(p)
    
    //区间运算符
    //...10
    //1...10
    //0...
    //..<10
    for index in 1...10{
        print(index,terminator: " ")
    }
    var j = true
    var l = false
    print(j && l)
    print(j || l)
    print(!j)
}

//计算圆的面积和周长
func calculation_of_circles(){
    //swift最麻烦的地方就是这些空置运算,很烦
    print("请输入圆的半径:",terminator: "")
    var r = readLine() ?? "0.0"
    var radius:Double = 0.0
    radius = Double(r) ?? 0.0
    
    let area = Double.pi * radius * radius
    let perimeter = 2 * Double.pi * radius
    
    print("半径为\(r)的圆,周长是:\(perimeter.rounded()),面积是:\(perimeter.rounded())")
    
}

    关注公众号:资小库,问题快速答疑解惑

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会写爬虫的程序员B

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值