一、基本类型的定义或声明
变量:定义变量用 var 关键字标注
例:
var str1 = "vincent"
var i=5
var 陈文 = 4//(不推荐使用中文作为变量)
//swift 的每一句语句后面可以不使用 ";" ,用了也可以,看个人习惯吧
//以上可看出swift中可以不标注数据类型,编译器自动根据变量值来判断数据类型(个人不推荐不标注类型,
1.标注类型对变量类型一目了然 2.后面数据处理会麻烦)
//如:var m
// m=5 ( 这种赋值方式是错误的,swift根据值来判定类型,所以不在m后面赋值就识别不了m的类型)
//以下我们来学类型标注的变量定义方式(注意标注类型的类型一般首字母要大写如:Int Float Double....)
var a:Int = 9
var b:Float = 9.2
var c:String = "博看文思"
var m:Int
m=2;//(这样就可以先定义后赋值了)
二、常量
用let关键字标注 (类似于 c 语言的 const)
let d = 5 //一旦定义d的就不可改变,这也是为了保护d的值
三、swift的基本数据类型
基本数据类型
对比c语言(常用数据类型)整型实型字符型
swift的数据类型很简单,分 整形Int.short...等 和 小数类型:Float.Double.等和c语言一样
而swift的字符放在哪里呢? swift放入字符以一种结构体的形式 和类的形式储存起来以下会介绍
var e:Int16 =24; //值不超过2的16次方其中int类型有 int8 int16 int32 int64 选择,入不标注位数如:int 就默认是int32,其他类型类似
var h:Float32 = 96.23
var iss:Double =4
//数据溢出
let overvalue:Int8 =Int8.max/3 //int8.max是去Int8的数值最大值
overvalue = 100*overvalue;//超过int8的最大范围,编译出错
//数据转换
var number1:Int =5
var number2:Float =5.15
var number3 = number1 +Int(number2)
//在swift中不同的类型的数据不可以操作,需要类型转换,所以swift对数据的安全性更高了
//bool类型
var flag:Bool =true;
println("hh");
if flag {println("hh")}
if flag==true{println("hh")}
//Bool类型和c一样,只有两个值,是0(false)和1(true)
//Bool的使用一般在if else ... 判断的条件形式出现
//元祖(对应的c语言的结构体)
//初始化
var st = {"vincent",24,120}//例如我储存一个的名字“vincent”,年龄 24 ,体重 120.5
//输出
println(st.0)
println(st.1)
println(st.2)
//等效
var st1:(String,Int,Double) = ("vincent",24,120.5)
或
var (name,age,average) = st
println(name)
//可选值 optional(有值 nil)
//定义
var optionalvalue:Int?
var optionalvalue1:Optional<Int>
var sss:Int
println(optionalvalue);
可选值optional类型看似没用但是它确实在UI设计中最常用的所以不要忽视
Optional也是Objective-C没有的数据类型,是苹果引入到Swift语言中的全新类型,它的特点就和它的名字一样:可以有值,也可以没有值,当它没有值时,就是nil。此外,Swift的nil也和Objective-C有些不一样,在Objective-C中,只有对象才能为nil,而在Swift里,当基础类型(整形、浮点、布尔等)没有值时,也是nil,而不是一个初始值,没有初始值的值,是不能使用的,这就产生了Optional类型。定义一个Optional的值很容易,只需要在类型后面加上问号(?)就行了(百度)
//显示拆包
var optionalvalue3:String?="hello word";
println(optionalvalue3)
//隐式拆包
var optionalvalue2:String! ="你好!";
optionalvalue2
三、运算符
数学运算符 + - * / %
var n1 = 3
var n2 = 4;
var result:Float =Float(n1)/Float(n2);
1.求余 %
var n3:Float = 3.15
var n4:Float = 1.6
result = n3 % n4;
2.溢出
var n5:Int8 = 127
var n6:Int8 = 2
var n7 = n5+n6 //int8 的范围是 0~127 所以超出了int8的范围就编译报错,所以我们在选择类型是要注意处理数据的范围!
//赋值运算符 = += ...(与c一样)
var n8 = 9
n8 += 3
//关系运算符 > < >= <= == != ?:与c一样
var n9=10
n8 < n9;
var isTrue:Bool = n8<n9
n9>n8 ? n9<n8 :n9 >n8
//逻辑运算符 ! || (或者) && (并且)与c一样
if n8 < n9 || n8 > n9 {println("true")}
//区间运算符
for i in 1 ... 5{println("i=\(i)")}与for 类似从运行的次数是5次
for i in 1 ..< 5{println("i=\(i)")} 4次
//不过swift中还是有for语句的
二进制运算(开发过程很少用到,所以我简单介绍,如有想知道的请百度或者私我)
位运算符:位运算符十一二进制bit为单位运算的
& :位与(同1才加1)
| :位或 (有1才加1)
^ :异或 (补位,相同为0,不同为1)
~ :位反
>> :右移 (移动补0)
<< :左移 (移动补0)
如:var x:UInt8 =0b10110010
var y:UInt8 =0b01011110
x & y
x | y
x ^ y
x<<3
x>>3
//下面介绍字符和字符串的储存方式
//结构体
var str3:String ="123"
var str2:String ="123"
println( str3 ==str2);(相等)
// 类(objective相同)
var str4:NSString ="123"
var str5:NSString ="123"
var str6:NSString ="123"
println( str4 === str5);(不等)
因为NSString是一指针地址的形式把数据储存起来的
四、字符窜:
字符窜是人类语言文字在计算机的一种最为直观的体现形式,字符窜是有字符组成
swift语言采用unicode编码,这意味着swift的字符可以涵盖几乎所有我们知道的字符
Unicode编码可以有单字节编码,也可以双字节编码,更更可以四字节编码,这就是swift的强大之处
//1.字符 用character 类型
var c2:Character = "文"
//swift中字符依然是双括号括起来
var c3:Character = "文"
//中文可以表示字符
var c4:Character = "";
//表情可以表示字符
var c5:Character =" ";
if c2 == c3{ println("true")}输出是true
//2.字符窜
//初始化一个字符窜
var string1 = "你好吗?"
var string2:String ="swift"
//创建一个空得字符窜
3种中形式
1.var string3:String =""
2.var string31 = ""
3.var string4 = String()
//4.表情
ar string5 = "上就要过年了!O(∩_∩)O~哈哈工作";
//5.求字符的长度
var length = countElements(string5)(求字符的长度大家都知道它对字符窜进行处理的意义吧!我只能说很重要,还能说的十真的很重要)
//6.字符窜操作
//6.1.拼接
var string6 = "bai"//定义
var string7:String ="du"//定义
var string71:String ="好"//定义
字符串与字符串
第一种形式: var string8 = string6 +string7 //拼接 结果是 baidu
var c3:Character = "文"
字符串与字符
第二种形式: string7.append(c3)//c3是字符形式 append()是系统函数,在字符串后面拼接字符
println(string7) 结果: du文
字符串与字符
第三种形式: var string9 = string7 + String(c3) du文文
//
var string10 = "swift"
string10.stringByAppendingFormat("%@%d%@","feuw",1,"grg") 结果:swiftfeuw1grg
//http://www.baidu.com/
//常用的拼接形式
//拼接网站域名
var domainStr = "http://www.baidu.com"
var filePath = "media/pic"
var file = "20150206_normal.png"
var urlString = "\(domainStr) /\(filePath)/\(file)" 结果:http://www.baidu.com /media/pic/20150206_normal.png
println("连接为:\(urlString)")
// /Users/3013/Desktop
var path = "/Users/3013/Desktop"
var filename = "ios/test2"
//var str:NSString = path.stringByAppendingPathComponent(filename) stringByAppendingPathComponent是一个拼接函数
//var str11:NSString? = path.stringByAppendingPathExtension("txt") stringByAppendingPathExtension拼接函数(优势是如果拼接空得也不报错)
//截取
// 先给区间再截取
前进
var index = advance(urlString.startIndex,5)//从头截取
var index2 = advance(urlString.endIndex, -5)//后面往前截
urlString.substringToIndex(index) 结果:http:
urlString.substringFromIndex(index) 结果://www.baidu.com /media/pic/20150206_normal.png
var length2 = countElements(urlString)//countElement:元素长度 这个函数经常用到大家注意了
urlString.substringToIndex(index2)
urlString.substringFromIndex(index2)// substring:子串
//常用
var range:Range = Range(start: index, end: index2)
urlString.substringWithRange(range)//子串区间
var subCharater:Character =urlString[index2]//截取到得第一个字符
for var i=0;i<10; i++ {
index = advance(urlString.startIndex, i)
urlString.substringFromIndex(index)
urlString[index]
}
//20.字符窜比较
var string11 = "baidu"
var string12 = "baidu"
//在swift中直接用关系运算符比较字符窜
if string11 ==string12 {println("大于")}//直接逐位比较字符assci大小
var string13:NSString ="baidu"
var string14:NSString ="baidu"
if string13 ===string14{println("equal")}
string13 = string14;
if string13 ===string14{println("equal")}//全等指针和内容都相等
//讲数字字串转换成数字
var string15 = "12.15"
var number:Int? = string15.toInt()
//var number:Float? = string15.
//字符窜前后缀
//前缀
if string11.hasPrefix("b")
{
println("yes")
}
//后缀
if string11.hasSuffix("dom")
{
println("yes")
}
//应用找出一个目录中有多少图片(.png .jpg)有多少歌曲(.mp3)
//大小写转换
string11.lowercaseString//小写
string12.uppercaseString//大写