Swift-2.基本数据类型
2016-04-21 本文已影响193人
夜千寻墨
基本数据类型
/*
基本数据类型
OC:
整型 int intValue = 10;
浮点型 double doubleValue = 10.10; float floatValue = 5.1;
长 long
短 short
有符号 signed
无符号 unsigned
各种类型的数据的取值范围在不同位的编译器下取值范围不同
Swift:注意关键字大写
*/
//整型
var intValue:Int = 10
//浮点型
var intValue1:Double = 10.10 // 表示64位浮点数
var intValue2:Float = 9.9 // 表示32位浮点数
//如果按照长度划分,Swift中的长短比OC更加精确
var intValue3:Int8 = 6
var intValue4:Int16 = 7
var intValue5:Int32 = 8
var intValue6:Int64 = 9
//有符号无符号, 默认是由符号的(UInt8/UInt16/UInt32/UInt64)
var uintValue7:UInt = 10
//注意: 无符号的数比有符号的取值范围更大, 因为符号位也用来存值
//Swift是类型安全的语言, 如果取值错误会直接报错, 而OC不会
取值不对
OC:unsigned int intValue = -10; 不会报错
Swift:var intValue:UInt = -10 会报错
溢出:
OC:int intValue = INT_MAX + 1; 不会报错
Swift:var intValue:UInt = UInt.max + 1 会报错
数据类型的相互赋值(隐式类型转换)
OC可以
int intValue = 10;
double doubleValue = intValue;
Swift:不可以
var intValue:Int = 10
var doubleValue:Double = intValue
在Swift中“值永远不会被隐式转换为其他类型”(OC中可以隐式类型转换), 以上语句会报错
类型转换
/*
Swift不允许隐式类型转换, 但可以使用显示类型转换(强制类型转换)
OC:
int intValue = 10;
double doubleValue = (double)intValue;
Swift:
*/
var intValue:Int = 10
var doubleValue:Double
doubleValue = Double(intValue)
// 注意:Double()并不会修改intValue的值, 而是通过intValue的值生成一个临时的值赋值给doubleValue
print(intValue)
print(doubleValue)
swift在定义常量的时候,如果指定了类型,但是实际的数据又与类型不一致就会报错,
比如这样:就会报错
let a: Int = 10.1
我们可以这样写:let a: Int = 10
或者这样强转:let a: Int = (intValue)10.1
bool类型
import Foundation
/*
C语言和OC并没有真正的Bool类型
C语言的Bool类型非0即真
OC语言的Bool类型是typedef signed char BOOL;
Swift引入了真正的Bool类型
Bool true false
*/
let isOpen = true;
//let isOpen = 1;
// Swift中if的条件只能是一个Bool的值或者是返回值是Bool类型的表达式(==/!=/>/<等等)
// OC中if可以是任何整数(非0即真), 但是存在的问题是可能将判断写错, 写成了赋值 if(isOpen = 2) , 在开发中为了避免这个问题有经验的程序员会这样写 if(2 == isOpen)来避免这个问题. 在Swift中很好的解决了这个问题
if isOpen
{
print("打开")
}else
{
print("关闭")
}