一:Swift 中的常量和变量
//1:分号有没有都可以
//2:类型推导,根据右边表达式来推导左边类型
let product_constant = "iphone"//常量
var product_var = "ipad"//变量
var id = 30;
print(id)
//3:多个变量
var x1 = 30, x2="abc"
//4:固定类型变量
var x3:Int = 31
//5:支持中文
var 刘爽 = "hello my name"
//6:支持特殊符号
var [笑脸]="你好吗?"
//7:输出多个变量
print("x1 = \(x1),x2 = \(x2),x3 = \(x3),中文 = \(刘爽),特殊字符 = \([笑脸])")
总结:
1:如果一个值在之后的代码中不会再变化,应该用let关键词将它声明为常量。变量只用来存储会更改的值。
2: Swift中可以使用几乎任何字符来作为常量和变量名,包括Unicode
二:Swift 中的数据类型
/**
数值类型:布尔类型
数值类型:整型和浮点型
//整型
整型:有符号 无符号
有符号: Int Int8 Int16 Int32 Int64
32位系统中:Int = Int32
64位系统中:Int = Int64
无符号:UInt UInt8 UInt16 UInt32 UInt64
32位系统中:UInt = UInt32
64位系统中:UInt = UInt64
*/
let minIntValue = Int.min
let maxIntValue = Int.max
let minInt8Value = Int8.min;//类推
print("minIntValue = \(minIntValue),maxIntValue = \(maxIntValue),minInt8Value = \(minInt8Value)")
/**
浮点类型 :float double(默认)
*/
//变量给定值,要注意其取值范围
let value1 = 123.4//double(默认)
let value2:Float = 123.4//指定类型
let value3 = 123//int(默认)
let value4:Int8 = 127 //指定类型
/**数制*/
let decimalInt = 20
let binaryInt = 0b1100 //12
let octalInt = 0o21 //17
let hexInt = 0x11 //17
print("decimalInt = \(decimalInt),binaryInt = \(binaryInt),octalInt = \(octalInt),hexInt = \(hexInt)")
/**可读性*/
let value5 = 12_000_000
let value6 = 1_000_000.000_000_1
print("value5 = \(value5),value6 = \(value6)")
/**布尔型*/
let bool_value = true //true或者false 不能是1或者0
if(bool_value){
}
/**类型别名*/
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min//maxAmplitudeFound初值是0
总结:实际编程中很少需要使用类型注解,定义常量或者变量的时候Swift已经根据初始化的值确定了类型信息。(类型推倒),Swift几乎都可以隐式的确定变量或常量的类型,详见: Type Safety and Type Inference。如果初始化值没有被给出,所以更好的办法是指定变量的类型而不是让Swift隐式推导类型。
三:Swift 中的字符串
/**
1:字符串类型String
2:字符串可以包含的特殊字符
3:字符串初始化
4:比较字符串
5:链接字符串
6:字符串大小写转化
*/
//1:字符串类型String
let strValue:String = "abc"
//2:字符串可以包含的特殊字符
/**
使用转意字符
\0 (null空字符)
\\ (反斜杠)
\t (制表符)
\n (换行符)
\r (回车符)
\" (双引号)
\' (单引号)
\xnn (字节Unicode) nn表示十六进制
\unnnn (双字节Unicode)
\Unnnnnnnn(四字节Unicode)
*/
let strValue1 = "\"今天是个\'好日子\'\""
print(strValue1)
/**
let strValue2="\x41"
print(strValue2)
let strValue3="\u2600"
print(strValue3)
*/
//3:字符串初始化
var emptyString1 = ""
var emptyString2 = String()
var emptyString3 = "abc"
var emptyString4 = String("abc")
//4:比较字符串
if emptyString3 == emptyString4
{
print("emptyString3 equal emptyString4")
}
//5:链接字符串
let str1 = "我是中国人\n"
let str2 = "我爱中国人\n"
var str = str1 + str2
var str3 = "hello"
str += str3;
print(str)
//6:字符串大小写转化
let lowercaseStr = "qwertyuiop"
let uppercaseStr = lowercaseStr.uppercaseString
print(uppercaseStr);
print(uppercaseStr.lowercaseString)
数值字面量:
下面的所有整数字面量的十进制值都是 17 :
let decimalInteger = 17
let binaryInteger = 0b10001// 二进制的17
let octalInteger = 0o21 // 八进制的17
let hexadecimalInteger = 0x11// 十六进制的17
错误描述: 如下代码运行时报错信息如图
let strValue2="\x41"
print(strValue2)
大致意思是数值字面量转换有问题吧,找了一下也没有找到好的答案,有懂解决方案的大神请留言,感谢