ios开发学习----swift学习之(一)基础数据类型

http://letsswift.com/2014/06/swift_overview/


常量和变量的声明

与c语言不同的是,常量和变量在使用前都需要声明,在Swift中使用let关键词来声明一个常量,var关键词声明一个变量。同样,常量的值是不能够被二次修改的。

可以在一行中声明多个变量或常量,用,号分隔:

var x = 0.0, y = 0.0, z = 0.0

Swift中可以使用几乎任何字符来作为常量和变量名,包括Unicode,比如:

let π = 3.14159
let 你好 = "你好世界"
let = "dogcow"

但是名称中不能含有数学符号,箭头,无效的Unicode,横线-和制表符,且不能以数字开头,尽管数字可以包含在名称里。一旦完成了声明,就不能再次声明相同名称的变量或常量,或者改变它的类型。变量和常量也不能互换。


类型注解

使用:号加空格加类型名在变量或常量名之后就可以完成类型注解。下面的例子就是声明了一个变量叫welcomeMessage,注解类型为字符串String:

var welcomeMessage: String

分号 “:” 在这的作用就像是在说:…是…类型的,因此上述代码可以理解为:

声明一个叫welcomeMessage的变量,它的类型是String

实际编程中很少需要使用类型注解,定义常量或者变量的时候Swift已经根据初始化的值确定了类型信息。Swift几乎都可以隐式的确定变量或常量的类型,如果初始化值没有被给出,所以更好的办法是指定welcomeMessage变量的类型而不是让Swift隐式推导类型。

输出常量和变量

Swift使用println来输出变量或者常量:

println是一个全局函数,用来输出一个值,最后输出一个换行。在Xcode中,println输出在控制台中。print函数也类似,只不过最后不会输出换行。

println函数一般输出一个字符串

println("This is a string")
// prints "This is a string"

println函数还可以格式化输出一些日志信息,就像是Cocoa中NSLog函数的行为一样,可以包括一些常量和变量本身。Swift在字符串中插入变量名作为占位符,使用反斜杠()来提示Swift替换变量/常量名为其实际的值,如:

println(“The current value of friendlyWelcome is \(friendlyWelcome)”) // prints “The current value of friendlyWelcome is Bonjour!”

整数

整数就是像42和-23这样不带分数的数字,包括有符号(正数,负数,0)和无符号(正数,0)。Swift提供了8、16、32和64位的数字形式,和C语言类似,可以使用8位的无符号整数UInt8,或者32位的整数Int32.像其他Swift类型一样,这些类型名的首字母大写。

整数边界

使用min或max值来获取该类型的最大最小值,如:

let minValue = UInt8.min // minValue is equal to 0, and is of type UInt8
let maxValue = UInt8.max // maxValue is equal to 255, and is of type UInt8
  • Double类型能表示64位的有符号浮点数。当需要表的数字非常大或者精度要求非常高的时候可以使用Double类型。
  • Float类型能表示32为的有符号浮点数。当需要表达的数字不需要64位精度的时候可以使用Float类型。

    注 Double 至少有15位小数,Float至少有6位小数。合适的浮点数小数位数取决于你代码里需要处理的浮点数范围。

类型推导使 编译器 在编译的时候通过你提供的初始化值自动推导出特定的表达式的类型。

例如,如果您指定42到一个新的常数变量,而不用说它是什么类型,Swift推断出你想要的常量是一个整数,因为你已经初始化它为一个整数

let meaningOfLife= 42
// meaningOfLife is inferred to be of typeInt

同样,如果你不指定浮点值的类型,Swift推断出你想要创建一个Double:

let pi = 3.14159
// pi is inferred to be of type Double

Swift总是选择Double(而非Float)当它需要浮点数类型时。如果你在一个表达式中把整数和浮点数相加,会推导一个Double类型:

let anotherPi= 3 + 0.14159
// anotherPi is also inferred to be of typeDouble

整型常量可以写成:

  • 一个十进制数,不带前缀
  • 一个二进制数,用前缀0b
  • 一个八进制数,用0o前缀
  • 一个十六进制数,以0x前缀

所有如下用这些整型常量都可以来表达十进制值的17:

let decimalInteger= 17
let binaryInteger = 0b10001 // 17 in binary notation
let octalInteger = 0o21 // 17 in octal notation
let hexadecimalInteger = 0x11 // 17 inhexadecimal notation

浮点可以是十进制(不带前缀)或十六进制(以0x前缀),小数点的两侧必须始终有一个十进制数(或十六进制数)。他们也可以有一个可选的指数,由一个大写或小写e表示十进制浮点数表示,或大写/小写p表示十六进制浮点数

带指数exp的十进制数,实际值等于基数乘以10的exp次方,如:

  • 1.25e2表示1.25×102,或者125.0.
  • 1.25e-2表示1.25×10-2,或者0.0125.

带指数exp的十六进制数,实际值等于基部数乘以2的exp次方,如:

  • 0xFp2表示15×22,或者60.0.
  • 0xFp-2表示15×2-2,或者3.75.

所有如下这些浮点常量都表示十进制的12.1875:

let decimalDouble= 12.1875
let exponentDouble= 1.21875e1
let hexadecimalDouble= 0xC.3p0

数字值可以包含额外的格式,使它们更容易阅读。整数和浮点数都可以被额外的零填充,并且可以包含下划线,以增加可读性。以上格式都不影响变量的值:

let paddedDouble= 000123.456
let oneMillion= 1_000_000
let justOverOneMillion= 1_000_000.000_000_1
类型之间的转化必须显式声明:

let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousandAndOne= twoThousand + UInt16(one)
let three = 3
let pointOneFourOneFiveNine= 0.14159
let pi = Double(three) +pointOneFourOneFiveNine
// pi equals 3.14159, and is inferred to beof typde Double

类型别名

类型别名为现有类型定义的可替代名称。你可以使用typealias关键字定义类型别名。

typealias AudioSample = UInt16

一旦你定义了一个类型别名,你可以在任何可能使用原来的名称地方使用别名:

var maxAmplitudeFound= AudioSample.min
// maxAmplitudeFound is now 0

这里,AudioSample被定义为一个UInt16的别名。因为它是一个别名,调用AudioSample.min实际上是调用UInt16.min,从而给maxAmplitudeFound变量赋初始值0。














http://www.cnblogs.com/wuxian/category/587713.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值