Swift入門篇-基本類型(2)

來源:互聯網
上載者:User

     現在我也在學習Swift語言,常常去逛很多蘋果社區和論壇,看到了圈子很多奇怪的現象,發現很多人都趕忙去翻譯 Swift書籍 和 發布Swift的視頻 。他們這種對新知識的探索精神我本人是很佩服的。但是我也覺得語言都沒有發布幾天,就趕忙去翻譯書籍和Swift視頻,然後講SWift語言多麼優美和多麼好。我個人覺得他們都沒有靜下心來,去敲代碼和研究Swift語言到底好在那裡,而急於去翻譯 未免也太草率了。

  今天主要分享的是 swift中基本類型的 下半部分。如果您對 SWift 中變數和常量 不是很清楚 請移步到 Swift入門篇-基本類型(1)

  一:定義指定類型的變數

    格式:     var  變數 : 類型  = 變數值   解釋:     直接定義變數的類型(而不是通過變數值 來推斷 變數類型)

 

例子:

////  main.swift//  基本類型2import Foundationvar A:Int = 10 //直接定義 變數A 的類型為整形println("A=\(A)")var B:Bool = true//直接定義 變數B 的類型為布爾類型println("B=\(B)")var C:String = "SWIFT" //直接定義 變數C 的類型為字串類型println("C=\(C)")

運行結果

A=10B=trueC=SWIFT

 

 二:定義指定類型的常量

   格式:     let  常量 : 類型  = 常量值   解釋:     直接定義常量的類型(而不是通過常量值 來推斷 常量類型)

例子:

////  main.swift//  基本類型2import Foundationlet A:Int = 10 //直接定義 常量A 的類型為整形println("A=\(A)")let B:Bool = true//直接定義 常量B 的類型為布爾類型println("B=\(B)")let  C:String = "SWIFT" //直接定義 常量C 的類型為字串類型println("C=\(C)")

運行結果

A=10B=trueC=SWIFT

注意點:

var A = 10 和var A:Int = 10 的區別?var A =10 //編譯器直接通過 變數值 10 來推斷 變數A 的類型是整形var A:Int = 10 //直接指定 A 的類型是整形

 

三:資料類型

①:進位表現方式


格式:

  十進位數,無首碼  位元,以 0b 為首碼  八位元,以 0o 為首碼  十六進位數,以 0x 為首碼

注意:
定義的變數或常量 儲存值為十進位。

例子:

  1:十進位表現方式

////  main.swift//  基本類型2import Foundationvar A = 10/*1:變數值10 無首碼 表示十進位2:變數或常量儲存的值必須為十進位3:10是十進位直接賦值給變數A*/println("A=\(A)")

運行結果

A=10

  2:二進位表現方式:

////  main.swift//  基本類型2import Foundationvar B = 0b1010
/*1:變數值0b1010 首碼0b表示二進位2: 變數或常量儲存的值必須為十進位3:二進位1010 轉換為十進位的之後,賦值給變數B*/println("B=\(B)")

運行結果

B=10

  3:八進位表現方式

////  main.swift//  基本類型2import Foundationvar C = 0o12/*1:變數值0o12 首碼是0o 八進位2: 變數或常量儲存的值必須為十進位3: 八進位12 轉換為十進位之後,在賦值給變數C*/println("C=\(C)")

運行結果

C=10

  4:十六進位

////  main.swift//  基本類型2import Foundationvar D = 0xA/*1:變數值0xA 首碼是0x 十六進位2: 變數或常量儲存的值必須為十進位3: 十六進位A 轉換為十進位之後,在賦值給變數C*/println("D=\(D)")

運行結果

D=10

 ②:整形變現形式

    整形 :有符號和無符號類型

    有符號類型: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//  基本類型2import Foundationvar A:Int = 10//定義 有符號的整形變數var B:Int8 = 10 //定義 有符號8位的整形變數var C:Int32 = 10 //定義 有符號的32位的整形變數var D:Int64 = 10 //定義  有符號的64位的整形變數println("A=\(A)")println("B=\(B)")println("C=\(C)")println("D=\(D)")

  運行結果

A=10B=10C=10D=10

  無符號的變數定義

////  main.swift//  基本類型2import Foundationvar A:UInt = 10//定義 無符號的整形變數var B:UInt8 = 10 //定義 無符號8位的整形變數var C:UInt32 = 10 //定義 無符號的32位的整形變數var D:UInt64 = 10 //定義  無符號的64位的整形變數println("A=\(A)")println("B=\(B)")println("C=\(C)")println("D=\(D)")

  運行結果

A=10B=10C=10D=10

1:有符號和無符號的整形的區別;

說明:無符號的定義的變數值必須為整數,有符號的定義的變數值可以為整數也可以為負數

注意點

////  main.swift//  基本類型2import Foundationvar A:Int = 10 //寫法正確:  A 為有符號整形變數,值可以是整數和負數var B:Int = -10// 寫法正確:  B為有符號整形變數,值可以是整數和負數var C:UInt = 10//寫法正確: C 為無符號整形變數 值必須為整形var D:UInt = -10 //寫法錯誤  C 為無符號整形變數 值不能為負數

2:有符號和符號的取值範圍

import Foundationvar 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=0,UInt8Max=255

Int8Min=-128,Int8Max=127

其他Int,UInt的取值範圍和上述一直,這裡就不介紹了。

注意的是: 在給UInt8 和Int 8賦值的時候 千萬不要操作他的取值範圍。

例子

////  main.swift//  基本類型2import Foundationvar A:Int8 = 10 //正確 A的取值是10 在 -128至127範圍var B:Int8 =300 //錯誤;B的取值是300 超過 -128至127範圍

 

浮點類型;

 浮點類型分為;Float ,Double 

 說明: Double的取值範圍大於Float類型,並且系統預設是Double類型

例子:

////  main.swift//  基本類型2import Foundationvar A = 12.1 // A是浮點類型 ,沒有明確指定類型,系統預設認為是Double類型var B:Float = 12.1 //指定類為 浮點類型中Float類型。println("A=\(A),B=\(B)")

運行結果

////  main.swift//  基本類型2import Foundationvar A = 12.0 // A是浮點類型 ,沒有明確指定類型,系統預設認為是Double類型var B:Float = 12.0 //指定類為 浮點類型中Float類型。println("A=\(A)")println("B=\(B)")

運行結果

A=12.0B=12.0

例子 2

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

運行結果

A=12.1B=12.1C=12.1000003814697

說明:

 var A = 12.1 和var B:Double = 12.1 輸出結果相同。即預設是double 類型。並且輸出一位小數。

問題:

var C:Float = 12.1 
為什麼輸出結果是 C=12.1000003814697 希望大家思考一下??

 

數字可讀性

例子 

底線(整形用法)

////  main.swift//  基本類型2import Foundationvar A = 110000var 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=110000B=110000C=110000

 

布爾類型:

////  main.swift//  基本類型2import Foundationvar A:Bool = true //bool 類型的取值 只能為 true  falsevar B:Bool = falseprintln("A=\(A)")println("B=\(B)")

運行結果

A=trueB=false

 

 

我回陸續把我學習到swift語言的知識寫出來形成一個系列。由於是新語言,個人理解難免有不足,歡迎給我提出意見。也可以加我QQ 1436051108一起討論,如果您有什麼問題,也可以直接在QQ留言發給我,我看到之後第一時間回複您

 最後總結一下。送上一直思維導圖,作為文章的結束

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.