1. 程式人生 > >Swift中的資料型別

Swift中的資料型別

資料型別 

swift 中常見的資料型別
Int 、Float、Double、Character、String 
Array、Dictonary、元組型別(Tuple)、可選型別(Optional)
可以看出,資料型別的首字母都是大寫的 

如何指定變數 常量的資料型別 
在常量 變數名後面加上冒號(:)和型別名稱
let age:Int = 10
上面程式碼表示:定義了一個Int型別的變數age 初始值是10

一般來說 沒有必要明確指定變數 常量的型別 
如果在宣告常量、變數時賦了初始值 Swift 以自動推斷出這個常量、變數的型別
let age = 20

//Swift 會推斷出age是Int型別 因為20是個整數 

變數初始化 
Swift嚴格要求變數在使用之前必須進行初始化 因為Swift是強型別 
而且是型別安全的語言 兩個型別不一樣是不能相加的
下面的寫法是錯誤的 

var a:Int 
let c = a + 10 
第一行程式碼中:Swift並不會為變數a賦初值 a沒有初始化
第二行程式碼會報錯 
下面的程式碼是正確的 
var a:Int = 20
let c = a + 10

整數分為2種類型 
有符號(signed) 正 負 0
無符號(unsigned) 正 負 0

Swift提供了8、16、32、64位的有符號和無符號的整數 
比如
UInt8: 8位無符號整型
Int32: 32位有符號整型
Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64

最值
可以通過max 和min 屬性來獲取某個型別的最小值和最大值
let minValue = UInt8.min 
let maxValue = UInt8.max 

Int和UInt 
Swift 提供了特殊的有符號整型和無符號的整型 
Int\UInt的長度和當前系統平臺一樣 
在32為系統平臺上 Int和UInt 的長度是32位
在64為系統平臺上 Int和UInt 的長度是64位

Int在32位系統平臺的取值範圍:-2147483648~2147483647
建議
在定義變數時 不要總考慮有符號 整數長度的問題 
儘量使用Int 這樣可以保證程式碼的簡潔性 和可複用
不會出現強制轉換的程式碼 

儲存範圍 
每種資料型別都有自己的儲存範圍 
Int8儲存的範圍是:-128~127
UInt8的儲存範圍是:0~255

如果數值超出了儲存範圍 編譯器就會直接報錯
下面的語句會直接報錯 
let num1:UInt8 = -1
let num2:Int8 = Int8.max + 1
第一行程式碼報錯原因UInt8不能儲存負數
第二行程式碼報錯的原因Int8能儲存的最大值是Int8,max

整數的表示形式
整數的4中表示形式
十進位制:沒有字首 
let i1 = 10 //10

二進位制:以0b為字首
let i2 = 0b1010 //10

八進位制:0o為字首
let i3 = 0o12//10

十六進位制:以0x為字首
let i4 = 0xA //10

 

浮點數 
浮點數:就是小數 Swift提供了兩種浮點型別 
Double:64位浮點數 當浮點值非常大或需要非常精確的使用此型別
Float: 32位浮點數 當浮點值不需要使用Double的時候使用此型別

精確程度 
Double 至少15位小數 
Float 至少6位小數 
如果沒有明確說明型別 浮點數預設就是Double型別 
let num = 0.14 

浮點數的表示形式 
浮點數
可以使用十進位制和十六進位制2種進位制來表示
十進位制沒有字首

沒有指數 let d1 = 12.5
有指數 let d2 = 0.125e2

十六進位制(以0x為字首且一定要有指數)
let d3 = 0xC.8p0
==0xC.8*2o==12.5*1
let d3 = 0xC.8p1 
== 12.5*2 ==25

數字格式 
數字可以增加額外的格式 使他們更容易閱讀
可以增加額外的0 
let money = 001999 //1999
let money2 = 001999.000 //1999.0

可以增加額外的下劃線_增強可讀性 
1. let oneMillion1 = 1_000_000 //1000000
2. let oneMillion2 = 100_0000 // 1000000
3. let overOneMillon = 1_000_000.000_001//1000000.000001
增加了額外的0_ 並不會影響數值的大小

型別轉換 

兩個型別不的同的數值 是不能直接進行計算的 
下面的語句是錯誤的
let num1:Uint8 = 10
let num2:Int = 20
let sum:Int = num1 + num2
第3行會 報錯
報錯原因:num1是UInt8型別的,num2是型別Int 型別不同
將num1轉化為Int型別 就能與num2進行相加 
下面的語句是正確的
let sum:Int = Int(num1) + num2

下面的語句是正確的 
let sum = 3 + 2.14
兩者的相加結果是5.14 等賦值之後 編譯器會自動推斷出sum是Double 型別 

類型別名 
可以使用typealias關鍵字定義型別的別名 跟C 語言的typedef作用類似
  typealias MyInt = Int 
  //給Int型別起了個別名加做MyInt 
  原型別名稱能用在什麼地方 別名就可以用在什麼地方
  宣告變數、常量型別 
  let num:MyInt = 20
  獲得型別的最值 
let minValue = MyInt.min 
型別轉換
let num = MyInt(3.14)//3


相關推薦

JS資料型別的分類

JS中資料型別的分類: (1).基本資料型別: 1.數字(number) 2.字串(string) 3.布林(boolean) 4.null 5.undefined (2).引用資料型別: 1.物件資料型別(object) 2.函式資料型別(function)

Javascript資料型別&深淺拷貝二

資料型別: Javascript中有5種基本資料型別(簡單資料型別),分別為:Undefined, Null, Boolean, Number和String; 同時還含有一種複雜資料型別,即物件(雖然js中一切皆為物件) 其中Undefined和Null的區別為: U

java資料型別

xl_echo編輯整理,交流學習請加1280023003 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 基本資料型別有一下四種 int資料型別有: byte(8bit, -128~127) short(16bit) int

VHDL資料型別轉換與移位(STD_LOGIC_ARITH與NUMERIC_STD)

1. VHDL目前常用庫檔案 目前寫VHDL程式時,大部分人已經熟悉的庫呼叫如下所示: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsi

swift基礎-資料型別-元組

  //定義一個元組 let http500Error = (500,"internal sever error") let (statusCode,statusMessage) = http500Error statusCode statusMessage let perso

swift基礎-資料型別-String

//定義一個字串 let  hello = "hello" let entity = "CoolKeTang" //通過拼接獲取一個變數 var helloWords = hello+","+entity helloWords+="!" //獲取當前字串中字元的數量 helloWord

swift基礎-資料型別-Double和Float

//定義一個浮點型別變數 通過變數的樹枝 判斷變數型別為浮點型 var a = 1.5 //定義一個float型別的浮點型。精度不高的話可以使用這個 var  b:Float = 2.5 //獲取Float的最大值 var c = Float.infinity //定義一個double

SQLServer之資料庫型別對應Java資料型別

SQL Server 型別 JDBC 型別 (java.sql.Types) Java 語言型別 bigint BIGINT long timestamp binary

oracle資料型別對應java型別[轉載] oracle資料型別對應java型別

oracle中資料型別對應java型別 轉載地址:https://www.cnblogs.com/softidea/p/7101091.html 地址: http://otndnld.Oracle.co.jp/document/products/oracle10g/102/

Java資料型別的轉換

/** * 資料型別的相互轉換 * */ public class DataTypeTranfer { public static void main(String[] args) { /** * 每個型別額轉換都有不止一種方式轉換 * 在我認為最方便的就是裝箱拆箱轉換。把

redis資料型別以及一些使用命令總結

redis資料型別:String、Hash、List、Set(無序不重複)以及zset(sorted Set(有序集合))。 在String中可以使用set/get來進行賦值和取值,String型別的值最大可以儲存512MB(一個鍵值)。 hash是一個鍵值對集合,是一個String

python資料型別

示例: xiaoming = {‘name’: ‘小明’, ‘age’: 20} print(xiaoming) print(type(xiaoming)) 根據鍵提取值 print(xiaoming[‘name’]) 根據不存在的鍵獲取值時會報KeyError錯 print(xiaoming[‘heigh

JavaScript資料型別轉換

在js中,資料型別轉換分為顯式資料型別轉換和隱式資料型別轉換。 1, 顯式資料型別轉換 a:轉數字: 1)Number轉換: 程式碼: var a = “123”; a = Number(a);   注意: a) 如果轉

python 資料型別--列表、元組的理解(一)

                                                   資料型別--列表、元組 一、列表 list 數值 score=80 字串 name1="tom" name2="jerry" name3="kate" 當需要儲存多個元素的

Java資料型別及其之間的轉換

基本的資料型別 基本型別有以下四種: 1)int長度資料型別有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、 2)float長度資料型別有:單精度(32bits float)、雙精度(64bits double),J

在Talend 的tMap元件資料型別轉換函式總結(一)

1.1 字串與數值型別相互轉換 1.1.1 字串轉為浮點型、整形 1)Float.parseFloat(row3.working_time ) Float.valueOf(String s) Float.valueOf(int s) 2)Integer.pars

JAVA資料型別之間的轉換規則分為兩種

2018年11月02日 15:09:15 十四月 閱讀數:3 標籤: 基礎概念

java資料型別在堆與棧的儲存

1.基本資料型別 eg:int i=1; 基本資料型別都存在棧中,它並沒有建立物件,只是將值放入變數的引用中。 2.引用型別         2.1  String a="abc"; //實際上a是引用變數,"abc"是物件(其實也算不上物

c#資料型別及轉換

值型別:(13種) a.值型別變數可以直接分配給一個值。它們是從 類 System.ValueType 中派生的。 b.值型別直接儲存其值 c. 值型別的例項通常是線上程棧上分配的(靜態分配),但 是在某些情形下可以儲存在堆中 d. 值型別總是分配在它宣告的地方:作為欄位時,跟隨其所 屬的變

C語言資料型別的本質

  資料型別可以理解為固定記憶體大小的別名。比如int型別,就是表示佔用4位元組的記憶體。 1 資料型別的大小   用sizeof操作符獲得資料型別的大小。    比如 int a[5];   sizeof(a)就可以得出int型陣列a的大小是20位元組