
作者 | __white
Dart的所有東西都是對象。它們都繼承自Object,預設是都是null。Dart中支援以下資料類型:
- Number 數值型
- String 字元串
- Boolean 布爾型
- List 數組
- Map 鍵值對
- Runes ([String]的符文(整數Unicode代碼點))
數值型 num
Dart中提供了兩種數值類型, 分别是整型int和浮點型double.
void main() {
//定義一個數值型a, 給a指派為1
num a = 1;
print(a); //列印a的值為1
a = 1.1; //給a指派為1.1
print(a); // 列印a的值為1.1
int b = 1;
b = 1.1 //此時會報錯:A value of type 'double' can't be assigned to a variable of type 'int'.
}
可以發現, 如果是使用 num 聲明的變量,那麼可以在 int 和 double 之間互相轉換.
但如果是直接定義了 int 或者 double , 那麼就不能再賦其他類型的值.
數值的操作
運算符 :
- + ,
- - ,
- * ,
- / ,
- ~/,
- %
加減乘都好了解了 , 我們看一下剩下的幾個操作:
void main() {
var a = 5 / 2; // 2.5
var b = 5 ~/ 2; // 2
var c = 5 % 2; // 1
}
直接使用 / 獲得的結果是長除法的結果 , 而使用 ~/ 獲得的結果是短除法中的商, 而是用 % 就是取餘數的操作了.
常用屬性
- isNaN : num的屬性,判斷一個對象是否為非數字,是數字則傳回false,否則傳回true.
- isEven : int 的屬性,判斷一個數字是否為偶數
- isOdd : int 的屬性,判斷一個數字是否為奇數
- sign : 傳回該整數的符号(對于0傳回0,對于小于0的值傳回 -1,對于大于0的值傳回 1。)
void main() {
int i = 1;
print(i.isNaN); // false
print(i.isOdd); // true
print(i.isEven); // false
print(i.sign); //1
}
常用方法
- abs() : 傳回該整數的絕對值
- round() : 傳回四舍五入的近似值
- floorl() : 向下取整
- ceil() : 向上取整
- toInt() : 轉成int類型 (舍去小數)
- toDouble() : 轉成double型
double i = 1.5;
print(i.sign); //1.0
print(i.abs()); //1.5
print(i.round()); //2
print(i.ceil()); //2
print(i.floorl()); //1
print(i.toInt().toDouble()); //1.0
字元串
聲明字元串
普通字元串使用單引号或者雙引号都可以,多行的可以使用'''來包裹.
String a = '我是字元串';
String b = '我也是字元串';
String c = '''第一行
第二行 ''';
聲明原始字元串,直接在字元串前加字元“r” , 可以避免“\”的轉義作用,在正規表達式裡特别有用
print('換行符: \n'); //輸出 : 換行符:
print(r'換行符: \n'); //輸出 : 換行符: \n*/
字元串拼接
//使用+ 連接配接
String a = '字元串1'+'字元串2';
//使用空格拼接
String b = 'adc' 'def' 'gg1';
//拼接對象和表達式
String a = 'a';
String k = '123${a.toString()}';
String s = '123${a}';
String l = '123$a';
可以在字元串中使用${}中包裹來實作拼接, 如果{}内是一個對象可以省略{}.
布爾值
為了表示布爾值,Dart有一個名為的類型bool。隻有兩個對象具有bool類型:true和false,它們都是編譯時常量。
assert 是語言内置的斷言函數,僅在檢查模式下有效 如果斷言失敗則程式立刻終止
String name = 'Li';
assert(name == "Li");
List
稱作集合(數組),是有序且可重複的。
List a = [];
List b = [1,2,3,"a"];
List c = new List();
List<int> d = [1,2,3];
map
是鍵值對的集合, 一般來說,map是将鍵和值相關聯的對象。鍵和值都可以是任何類型的對象。每個鍵隻出現一次,但你可以多次使用相同的值。Dart支援map由map文字和map類型提供。
const final var
再聊點const和final,用法和其他語言類似 在聲明變量的時候,除了var,還可以使用const和final 同時,在使用const和final的時候,可以省略var或者其他類型
var i = 10;
const i = 10;
final i = 10;
int i = 10;
const int i = 10;
final int i = 10;
const和final定義的都是常量,值不能改變 并且在聲明的時候就必須初始化 但是也有細微差别,簡單來說
const定義的是編譯時常量,隻能用編譯時常量來初始化 final定義的常量可以用變量來初始化
final time = new DateTime.now(); //Ok
const time = new DateTime.now(); //Error,new DateTime.now()不是const常量
var、final等在左邊定義變量的時候,并不關心右邊是不是常量 但是如果右邊用了const,那麼不管左邊如何,右邊都必須是常量
const list = const[1,2,3];//Ok
const list = [1,2,3];//Error
final list = [1,2,3];//Ok
final list = const[1,2,3];//Ok
final list = const[new DateTime.now(),2,3];//Error,const右邊必須是常量
感謝閱讀,本文完~
學習更多技能
請擊下方公衆号