2015-07-26 20:12:35 CHENYUFENG1991 阅读数 5574

      我们在学习C语言的时候,总是会去记忆一些数值,如int能表示的最大值最小值,long型能表示的最大值最小值。或者是在其他语言或者其他的数据类型上,占多少个字节,占多少位,这是一件比较头疼的事情。

      来到Swift中就比较简单了,直接用代码就可以看到类型所能表示的最值。


      如图所示,Int8表示占一个字节,Int16表示占两个字节,以此类推。可以看到我们一般使用的Int类型占用8个字节,和我们在C语言中的long型表示的一样。妈妈再也不用担心我记忆这些麻烦的数据了。


github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

2015-11-13 23:02:05 jintaoyuan 阅读数 179

swift中提供8163264位的有符号和无符号整数,比如

UInt88位无符号整型

Int32:32位有符号整型

  Int8  Int16  Int32 Int64  UInt8  UInt16  UInt32  UInt64



最值

通过min和max属性来获取某个类型的最小值和最大值

let minValue = UInt8.min

let maxValue = UInt8.max


swift还提供了特殊的有符号整数类型Int和无符号整数类型UInt

32位系统平台下,Int和UInt的长度是32位

64位系统平台下,Int和UInt的长度是64位


总结:swift是属于强类型语言,类型安全较为重要

以下例子可以证明

let num1 = 3    //num1是Int类型

let num2 = 0.14   //num2是Double类型

let num3 = num1 + num2  //会立马报错


Double:64位浮点数  至少15位小数

Float: 32位浮点数   至少6位小数


let d1 = 12.5

let d2 = 0.125e2

__mark__MeN  == M * 10的N次方




the last

 swift可以使用type alias关键字定义类型的别名,跟C语言的typedef作用类似

typealias MyInt = Int


原类型名称能用在什么地方,别名就能用在什么地方

1:声明常量/变量类型

let num:MyInt  = 20

2.获得类型的最值

let minValue = MyInt.min

3.类型转换

let num = MyInt(3.14)

2017-06-13 16:06:32 IT_201607 阅读数 935

在Swift刚出来时就学习过,之后也一直没有用Swift写过项目,很快就忘记了,最近又花了点时间过了一遍官方的学习文档。

Swift与OC的差异

基础语法

  • 声明使用let和var关键字,Swift可以推出出类型,let声明的常量不可修改,var声明变量。
  • Swift对数据要求严格,不存在隐式转换,强制转换格式:int(a)
  • 使用整数类型的 min 和 max 属性来获取对应类型的最小值和最大值
  • BOOL类型只有true和false,不再是非0即真,Swift的赋值运算符没有返回值
  • Swift增加了元组类型。元组把多个值组合成一个复合值,元组内的值可以使任意类型,并不要求是相同类型。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值。
  • Swift增加了可选类型,用于处理值缺失的情况。可选类型表示:有值或无值。swift定义的常量和变量是没有默认值的,所以引入了可选的概念,用?修饰变量,标示该变量的值可能为空也可能为某个值,然后获取的时候用!强制解析,此时必须有值,否则报运行时错误。涉及到可选绑定、强制解析和隐式解析等内容。
  • Swift范围运算符:闭区间运算符(a…b),半开区间运算符(a..

字符串

  • 使用+链接字符串
  • 字符串/字符可以用等于操作符(==)和不等于操作符(!=)进行比较
  • 使用下标,下标可以定义在类、结构体和枚举中,是访问集合,列表或序列中元素的快捷方式。

语句

  • Switch语句: Swift 中,可匹配各种类型,当匹配的 case分支中的代码执行完毕后,程序会终止switch语句,而不会继续执行下一个 case分支。不用像OC一样使用break跳出。还可以使用where语句进行条件判断
  • 循环语句中必须加{} ,即使只有一行代码

函数闭包

  • 函数格式 func Sum (num1:Int,num2:Int) –>Int{},与oc一样函数具有有参数、无参数、有返回值、无返回值等多种类型,也可作为参数或返回值。
  • Swift特有的闭包表达式,{ (parameters) -> returnType in
    statements
    }

属性

  • 新增计算属性,计算属性不直接存储值,而是提供一个 getter 和一个可选的setter,来间接获取和设置其他属性或变量的值。
  • 属性观察器,willSet 在新的值被设置之前调用
    didSet 在新的值被设置之后立即调用
    willSet 观察器会将新的属性值作为常量参数传入,在 willSet 的实现代码中可以为这个参数指定一个名称,如果不指定则参数仍然可用,这时使用默认名称 newValue 表示。

其他

当然还有很多的差异没有列出来,这里只是简单的归纳了一部分常遇到的。
* Swift只有一个.swift的文件,没有OC的.h和.m文件,不再需要引入头文件来声明。
* 每条语句不需要使用结尾,除非是一行中包含多条语句。
* Swift支持多行嵌套注释,注释嵌套/*/**/*/

Swift封装的控件

浏览完文档,随意封装了些控件
类新闻客户端
动画加载gif图
日期选择器

2015-12-10 12:53:38 imanapple 阅读数 386

今天学习swift的数据类型,进行一下小结

1.
首先是常量变量,常量的定义的let,变量的定义是var

2.
数据类型,Int UInt Float Double 都是结构体的定义
Int还可以细分为 Int8 Int16 Int32 Int64
例如Int8的最大值,可以调用 Int8.max

3.Bool布尔类型,只能为真和假,0 1 32 等原来在oc中有效的,不再算作Bool值

4.变量定义时,可以不指定具体类型,直接赋值,此时它会自动赋予类型,这种形式成为 类型推断

var a = 10 等同于 var a: Int; a = 10;

5.swift的类型校验非常严格,不允许隐式类型转换

var a: Int = 1.0 会报错,但是c中会转换

6.运算中的校验也很严格,int溢出会报错

举一个特例

var c: Int8 = Int8.max-1
var d: Int8 = Int8.max-1

var e : Int8 = c  - Int8.max + d //正常

e = c + d - Int8.max //报错
2018-03-30 10:54:13 fenglin0429 阅读数 489

基本数据类型–整型

var imInt: Int = 80  //有符号整型
// Int 其存储空间是有限的,位数默认跟机器相应
Int.max //查看最大值
Int.min //查看最小值

var imUInt: UInt = 80 //无符号整型
UInt.max //是Int.max的两倍多1,
UInt.min // 0 ,不能存储负数

Int8.max // 127,8位整型
Int8.min //-126

UInt16.max
UInt16.min

Int32.max
Int32.min

UInt32.max
UInt32.min

Int64.max
Int64.min

UInt64.max
UInt64.min

let decimalInt: Int = 17
let binaryInt: Int = 0b10001 //二进制整型17

let octalInt: Int = 0o21     //八进制整型17

let hexInt: Int = 0x11       //十六进制整型17

let oneMillion= 1_000_000 //数值过大时,可用下划线分割,三位一组

基本类型–浮点数和类型转换

//浮点数
let inFloat: Float = 3.1415926 // 其实际值为 3.14159
let inDouble: Double = 3.1415926
let x = 3.1415926 //根据其位数,默认为Double
var a = 1.25e10
var b = 1.25e-8
var c = 1_000_000.000_000_1

CGFloat //图形相关浮点数
// 例如: UIColor的参数类型皆是CGFloat
//类型转换---Swift无法进行隐式的类型转换
let x: UInt16 = 100
let y: UInt8 = 20
x+y //会报错,类型不同而导致无法相加,必须显式转换类型
let m = x + UInt16(y)
let n = UInt8(x) + y //该算式会提示溢出,x超出内存
// 同样适用于浮点数

基本类型–布尔型

let imTrue: Bool = true
let imFalse: Bool = false

// swift 中()不是必须,也可加(),提升优先级
if imTrue{ 
    print("I'm True")
}else{
    print("I'm False")
}


if imFlase{
    print("I'm False")
}else if 3+4 == 7{
    print("3+4 == 7")
}

//下面的算式时错误的 swift中不能判断Int为Bool 
if 1{ 
    print("True")
}

基本类型 – 元组

// Tuple 将多个不同的值集合成一个数据
var point = (5,2) // 点坐标

var httpResponse = (404,"Not Found")
// 可以有多个任意值,不同的值可以是不同的类型

//显式声明类型
var point2: (Int, Int, Int) = (10, 5, 2)
var httpResponse: (Int,String) = (200,"Ok")

// 获取元组中的值,进行解包
let (x, y) = point
x == 5
y == 2
// 或者 
point.0 == 5
point.1 == 2

let (statusCode, statusMessage) = httpResponse

let point3 = (x:3,y:2)
point3.x == 3
point.y ==2

let point4:(x:Int,y:int) = (10,5)
point4.x ==10
point4.y == 5

let loginResult = (true, "admin")
let (isLoginSuccess, _) = loginResult 
// _下划线表示不需要解包第二个值
if isLoginSuccess{
    print("Login Success!")
}else{
    print("Login failed!")
}
没有更多推荐了,返回首页