一:常量和变量
方式1:类型推断
方式2:类型标注
swift语言有一个非常强大的功能,就是类型推断,不需要标注变量的类型,可以根据赋值进行类型自动匹配和推断
类型标注 是指明变量的类型如Int等 这种是非常安全的
//
// main.swift
// ios_swift
//
// Created by 阿三哥 on 16/6/16.
// Copyright © 2016年 阿三哥. All rights reserved.
//
import Foundation
print("Hello, World!")
/*
变量 var 变量名
*/
var a=10
print(a)
a=9;
print(a)
/*
常量 let 常量名称
*/
let b=10
print(b)
/*
类型标注 var 变量名称:变量类型
*/
var x:Int
x=100;
print(x)
/*
常量声明必须赋值
*/
let y:Int=111;
/*
名称不再符合标识符的规范
*/
var 中国=99999;
print(中国)
二:基本数据类型
var intMax=Int.max
print("int max value: \(intMax)")
var intMin=Int.min
print("int min value: \(intMin)")
/*
无符号整形 和当前平台的原生字长度相同
*/
let minValue=UInt8.min
let maxValue=UInt8.max
print("int min: \(minValue) int maxValue: \(maxValue)")
/*
数字类型字变量
一个十进制数,没有前缀
一个二进制数,前缀是0b
一个八进制数,前缀是0o
一个十六进制数,前缀是0x
*/
let decimalInteger=17
let binnaryInteger=0b10001
let octalInteger=0o21
let hexadecimalInteger=0x11
print(" ecimalInteger:\(decimalInteger) \n becimalInteger:\(binnaryInteger) \n octalInteger:\(octalInteger) \n hexadecimalInteger:\(hexadecimalInteger)")
/*
指数
*/
var i=1e2
print("10 的平方:\(i)")
let twoThousand:UInt16=2_000;
let one:UInt8=1;
let twoThousandAndOne=twoThousand+UInt16(one)
print("twoThousandAndOne:\(twoThousandAndOne)")
let three=3;
let poinyOneFourOneFiveNine=0.14159
let pi=Double(three)+poinyOneFourOneFiveNine;
print("pi:\(pi)")
三:类型推断和类型安全
swift语言类似于kotlin 能给在不指定数据类型的 根据赋值进行自动推断类型
swift在推断浮点值得时候会最终推断为Double
数据类型不一致 进行运算就会提示不能编译
如整数和浮点数相加 不转换就会编译失败
不存在隐式转换,必须强转 类型因此而安全
四:类型转换
/*
类型转换 语法:类型(值)
*/
var intVar=12.0;
var age=Int(intVar)
print("age is:\(age)")
五:BOOL类型
/*
布尔类型 Bool true/fase
*/
let isMan=true;
print("isMan:\(isMan)")
if(isMan)
{
print("isMan");
}else{
print("isNotMan");
}
let isWoman=1;
if(isWoman==1)
{
print("isWoman")
}else{
print("isNotWoMan")
}
六:元组
/*
元组 将不同类型数据进行组合 (30,"hello")
*/
let student=("张三",23,"男")
print("zhangsan:\(student)")
print("zhangsan name:\(student.0)")
print("zhangsan age:\(student.1)")
print("zhangsan sex:\(student.2)")
let student2:(String,Int,String)=("李四",24,"女")
print("lisi:\(student2)")
print("lisi name:\(student2.0)")
print("lisi age:\(student2.1)")
print("lisi sex:\(student2.2)")
// 提取元组
let (name1,age1,sex1)=student
print("name:\(name1)")
print("age:\(age1)")
print("sex:\(sex1)")
// 提取部分元素
let (name2,age2,_)=student
print("name2:\(name2)")
print("age2:\(age2)")
let student3=(name:"王五",age:45,sex:"男")
print("student3:\(student3)")
print("student3.name:\(student3.name)")
print("student3.age:\(student3.age)")
七:可选类型
/*
可选值:optionals,一种是有值,一种没有值nil
可选值可以用if语言判断
*/
var optionalValue :String? = "ok good"
print("optionalValue:\(optionalValue)")
/*
可选值 强制解析 使用!符号
当我们对可选值 强制解析 如果可选值没有值 会引发运行时异常
*/
var optionInt :Int? = 6;
var optionInt2:Int=optionInt!
print("optionInt2:\(optionInt2)")
// 可选绑定
if var svalue=optionInt
{
print("可选值有值")
}
八:隐式解析可选