前面一篇文章介紹了如何定義變數,接下來的幾篇,我將逐一介紹 Dart 中的內建資料型態。
Dart 常用內建資料型態為
num class 繼承圖
Dart 的數字資料型態有兩種:整數 (Integer) 以及浮點數 (Floating-point)。
定義於 int 類 中,預設是實作 64位元二進制補數的整數,範圍為 -2^63 ~ 2^63-1。
當編譯成 JavaScript 時,會使用 JavaScript number,其範圍為 -2^53 ~ 2^53-1。
定義整數的方式:
var number = 1;
var hex = 0xFF000011;
int intValue = 100;
int number = 100;
print(number.bitLength);
// 7
→ 整數 100 換算成二進制為 1100100,所以最小可以儲存的位元個數則為 7。
print(73.isEven); //false
print(73.isOdd); //true
int postiveNumber = 50;
int negativeNumber = -40;
print(postiveNumber.sign); //1
print(negativeNumber.sign); //-1
16.toSigned(5) == -16 // 00010000 -> 11110000
239.toSigned(5) == 15 // 11101111 -> 00001111
^ ^
(-1).toUnsigned(5) == 31 // 11111111 -> 00011111
定義於 double 類為 IEEE 754 標準的雙精度浮點數 (64-bit)。
var floatingNumber = 1.1;
var exponents = 2.172e5;
double doubleValue = 1; // 等於 double doubleValue = 1.0;
int 與 double 都具有空安全的特性。當數字還沒有指定給變數時,該變數的值為 null,在未初始化變數時就使用,Dart 會回傳 null,而不是拋出例外。
int intNumber;
print(intNumber);
//null
double doubleNumber;
print(doubleNumber);
//null
在 int 以及 double 中,皆提供了 parse() 靜態函數,將欲轉換的數字字串帶入,即可轉換成該數字。
若帶入的文字無法轉換成數字,則會拋出 FormatException。
//String -> Int
print(int.parse('1')); // OK, result is 1
print(int.parse('1.1')); // FormatException
print(int.parse('a')); // FormatException
//String -> Double
print(double.parse('1.1')); //OK, result is 1.1
print(double.parse('1')); // OK, result is 1.0
print(double.parse('b')); // FormatException
不知道你有沒有發現,上方的範例有一些是直接在數值後面用 . 呼叫方法。
例如:
print(73.isEven)
因為在 Dart 中所有的項目都是 Object ,數值經過類型推斷之後就可以呼叫類別的方法。
這樣子的寫法變得更簡潔,更易懂。
Dart 把數字資料型態簡單的分成兩類:整數以及浮點數,所以在程式設計時,不需特別針對儲存的大小使用不同的資料型態。
目前,Dart 還沒有非空型態,所以在定義變數時,若沒有指定數值,其值就會是 null。
在 Dart 中每個項目都是 Object,所以可以直接在數值後面加上 . 使用該型態的方法。