现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 。他们这种对新知识的探索精神我本人是很佩服的。但是我也觉得语言都没有发布几天,就赶忙去翻译书籍和Swift视频,然后讲SWift语言多么优美和多么好。我个人觉得他们都没有静下心来,去敲代码和研究Swift语言到底好在那里,而急于去翻译 未免也太草率了。

今天主要分享的是 swift中基本类型的 下半部分。如果您对 SWift 中变量和常量 不是很清楚 请移步到 Swift入门篇-基本类型(1)

一:定义指定类型的变量

    格式:
   var 变量 : 类型 = 变量值 解释:
  直接定义变量的类型(而不是通过变量值 来推断 变量类型)

例子:

//
// main.swift
// 基本类型2 import Foundation var A:Int = //直接定义 变量A 的类型为整形
println("A=\(A)") var B:Bool = true//直接定义 变量B 的类型为布尔类型
println("B=\(B)") var C:String = "SWIFT" //直接定义 变量C 的类型为字符串类型
println("C=\(C)")

运行结果

A=
B=true
C=SWIFT

二:定义指定类型的常量

   格式:

     let  常量 : 类型  = 常量值

   解释:
  直接定义常量的类型(而不是通过常量值 来推断 常量类型)

例子:

//
// main.swift
// 基本类型2 import Foundation let A:Int = //直接定义 常量A 的类型为整形
println("A=\(A)") let B:Bool = true//直接定义 常量B 的类型为布尔类型
println("B=\(B)") let C:String = "SWIFT" //直接定义 常量C 的类型为字符串类型
println("C=\(C)")

运行结果

A=
B=true
C=SWIFT

注意点:

var A =  和var A:Int =  的区别?

var A = //编译器直接通过 变量值 10 来推断 变量A 的类型是整形

var A:Int =  //直接指定 A 的类型是整形

三:数据类型

①:进制表现方式

格式:

  十进制数,无前缀

  二进制数,以 0b 为前缀

  八进制数,以 0o 为前缀

  十六进制数,以 0x 为前缀

注意:
定义的变量或常量 存储值为十进制。

例子:

  1:十进制表现方式

//
// main.swift
// 基本类型2 import Foundation var A =
/*
1:变量值10 无前缀 表示十进制
2:变量或常量存储的值必须为十进制
3:10是十进制直接赋值给变量A
*/ println("A=\(A)")

运行结果

A=10

  2:二进制表现方式:

//
// main.swift
// 基本类型2 import Foundation var B = 0b1010
/*
1:变量值0b1010 前缀0b表示二进制 2: 变量或常量储存的值必须为十进制 3:二进制1010 转换为十进制的之后,赋值给变量B */ println("B=\(B)")

运行结果

B=

  3:八进制表现方式

//
// main.swift
// 基本类型2 import Foundation var C = 0o12
/*
1:变量值0o12 前缀是0o 八进制
2: 变量或常量储存的值必须为十进制
3: 八进制12 转换为十进制之后,在赋值给变量C
*/
println("C=\(C)")

运行结果

C=

  4:十六进制

//
// main.swift
// 基本类型2 import Foundation var D = 0xA
/*
1:变量值0xA 前缀是0x 十六进制
2: 变量或常量储存的值必须为十进制
3: 十六进制A 转换为十进制之后,在赋值给变量C
*/
println("D=\(D)")

运行结果

D=

②:整形变现形式

  整形 :有符号和无符号类型

  有符号类型:Int ,Int8 ,Int32,Int64

  无符号类型: UInt ,UInt8 UInt32,UInt64

  注意点:如果你的开发环境是32位,那么Int = Int32

   如果你的开发环境是64位,那么Int = Int64

  如果你使用mac OS X Yosemite 10.10和Xcode 6.0 Bate 那么你的系统是64位的

例子:

  有符号的整形

//
// main.swift
// 基本类型2 import Foundation var A:Int = //定义 有符号的整形变量 var B:Int8 = //定义 有符号8位的整形变量 var C:Int32 = //定义 有符号的32位的整形变量 var D:Int64 = //定义 有符号的64位的整形变量 println("A=\(A)")
println("B=\(B)")
println("C=\(C)")
println("D=\(D)")

  运行结果

A=
B=
C=
D=

  无符号的变量定义

//
// main.swift
// 基本类型2 import Foundation var A:UInt = //定义 无符号的整形变量 var B:UInt8 = //定义 无符号8位的整形变量 var C:UInt32 = //定义 无符号的32位的整形变量 var D:UInt64 = //定义 无符号的64位的整形变量 println("A=\(A)")
println("B=\(B)")
println("C=\(C)")
println("D=\(D)")

  运行结果

A=
B=
C=
D=

1:有符号和无符号的整形的区别;

说明:无符号的定义的变量值必须为整数,有符号的定义的变量值可以为整数也可以为负数

注意点

//
// main.swift
// 基本类型2 import Foundation var A:Int = //写法正确: A 为有符号整形变量,值可以是整数和负数 var B:Int = -// 写法正确: B为有符号整形变量,值可以是整数和负数 var C:UInt = //写法正确: C 为无符号整形变量 值必须为整形 var D:UInt = -10 //写法错误 C 为无符号整形变量 值不能为负数

2:有符号和符号的取值范围

import Foundation

var UInt8Min = UInt8.min //UInt8.min 是求UInt8的最小值
var UInt8Max = UInt8.max //UInt8.max 是求UInt8的最大值 println("UInt8Min=\(UInt8Min),UInt8Max=\(UInt8Max)") var Int8Min = Int8.min //UInt8.min 是求UInt8的最小值
var Int8Max = Int8.max //UInt8.max 是求UInt8的最大值 println("Int8Min=\(Int8Min),Int8Max=\(Int8Max)")

运行结果

UInt8Min=,UInt8Max=255

Int8Min=-,Int8Max=

其他Int,UInt的取值范围和上述一直,这里就不介绍了。

注意的是: 在给UInt8 和Int 8赋值的时候 千万不要操作他的取值范围。

例子

//
// main.swift
// 基本类型2 import Foundation var A:Int8 = //正确 A的取值是10 在 -128至127范围 var B:Int8 = //错误;B的取值是300 超过 -128至127范围

浮点类型;

浮点类型分为;Float ,Double

说明: Double的取值范围大于Float类型,并且系统默认是Double类型

例子:

//
// main.swift
// 基本类型2 import Foundation var A = 12.1 // A是浮点类型 ,没有明确指定类型,系统默认认为是Double类型 var B:Float = 12.1 //指定类为 浮点类型中Float类型。 println("A=\(A),B=\(B)")

运行结果

//
// main.swift
// 基本类型2 import Foundation var A = 12.0 // A是浮点类型 ,没有明确指定类型,系统默认认为是Double类型 var B:Float = 12.0 //指定类为 浮点类型中Float类型。 println("A=\(A)")
println("B=\(B)")

运行结果

A=12.0
B=12.0

例子 2

//
// main.swift
// 基本类型2 import Foundation var A = 12.1
var B:Double = 12.1
var C:Float = 12.1 println("A=\(A)") println("B=\(B)") println("C=\(C)")

运行结果

A=12.1
B=12.1
C=12.1000003814697

说明:

var A = 12.1 和var B:Double = 12.1 输出结果相同。即默认是double 类型。并且输出一位小数。

问题:

var C:Float = 12.1 
为什么输出结果是 C=12.1000003814697 希望大家思考一下??

数字可读性

例子

下划线(整形用法)

//
// main.swift
// 基本类型2 import Foundation var A =
var B = 110_000//下划线可以放置任何位置
var C = 1_100_00
/*
1: A ,B,C 输出结果是相同的
2:用下划线(_)用来分隔 外数,便于数字可读性
3: 下划线(_) 可以放置N个,但是不能把下划线(_) 开头 */ println("A=\(A)")
println("B=\(B)")
println("C=\(C)")

运行结果

A=
B=
C=

布尔类型:

//
// main.swift
// 基本类型2 import Foundation var A:Bool = true //bool 类型的取值 只能为 true false var B:Bool = false println("A=\(A)") println("B=\(B)")

运行结果

A=true
B=false

我回陆续把我学习到swift语言的知识写出来形成一个系列。由于是新语言,个人理解难免有不足,欢迎给我提出意见。也可以加我QQ 1436051108一起讨论,如果您有什么问题,也可以直接在QQ留言发给我,我看到之后第一时间回复您

最后总结一下。送上一直思维导图,作为文章的结束

Swift入门篇-基本类型(2)的更多相关文章

  1. Swift入门篇-基本类型(1)

    博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 今天遇到了一个很烦的事情是,早上10点钟打开电脑,一直都进入系统(我的系统  mac OS X Yosemite 10.1 ...

  2. Swift入门篇-基本类型(3)

    一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, …) 说明: : 元组变量还是一个变量,只不过表现方式和其他变量不一样 :()括号里面可以放入N个变量组成 例子: import Fo ...

  3. Swift入门篇-循环语句

    今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...

  4. Swift入门篇-字符串和字符

    今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...

  5. Swift入门篇-闭包和函数

    今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...

  6. Swift入门篇-Hello World

    提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...

  7. Swift入门篇-swift简介

    潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 在前期 ios入门篇 -hello Word(1) 文章中介绍我这半年准备写一些ios ...

  8. Swift入门篇-结构体

    前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中 ...

  9. swift入门篇-函数

    今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数  --常量参数 func 函数名( 参数变量:类型 ...

随机推荐

  1. nginx日志中访问最多的100个ip及访问次数

    nginx日志中访问最多的100个ip及访问次数 awk '{print $1}' /opt/software/nginx/logs/access.log| sort | uniq -c | sort ...

  2. C#签名 NX90

    1.在VS中添加D:\Siemens\NX90\ \NXSigningResource.res文件,右击文件属性,将资源变为 嵌入式资源,即生成方式 2.编译生成exe文件或者dll文件,例如:xxx ...

  3. Apache配置默认首页面

    conf -> httpd.conf下设置成 <IfModule dir_module> DirectoryIndex index.php index.html index.htm ...

  4. Web 通信 之 长连接、长轮询(long polling)

    基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易 ...

  5. LeetCode OJ-- Remove Element

    https://oj.leetcode.com/problems/remove-element/ 简单处理 class Solution { public: int removeElement(int ...

  6. php执行流程

    1.源码文件编写,php源文件 2.词法分析,token 3.语法分析,生成opcode并组成opcode array 4.执行opcode,返回结果

  7. HtmlHelper和强类型转换

    MVC HtmlHelper;1.Url():<%= Html.ActionLink("用户列表","方法","控制器") %> ...

  8. jquery实现TODOList

    html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  9. jQuery in action 3rd - Operating on a jQuery collection

    1.创建新 DOM 元素 $('<div>Hello</div>'); $('<img>', { src: 'images/little.bear.png', al ...

  10. 关于eclipse在线下载安装android SDK没反应解决方法

    虽然天朝将google这个服务器给和谐掉了 虽然我们也可以选择其他各类FQ软件 虽然你可能有其他手段解决 不过我还是要提供一个参考方法: 具体操作方式: 点击桌面左下角开始菜单中的搜索,把以下路径,复 ...