Dart是一門新的編程語言,如同JAVA、PHP同樣,是爲了解決編寫應用程序中的一些實際問題而被造輪子發明出來的,而這個造輪子的人就是 Google。可能你們都熟悉Google 的另外一個輪子Golang,而對 Dart 聽聞甚少,其實Dart 的出生跟Go很相近,只是因爲它的星途比起Go來講有點坎坷,一直沒有被廣大開發者重視,相關的技術文章和應用比較匱乏,也就一直蒙塵在泛泛語言之中。前端
登陸 Dart 的官網,你能夠很清楚的看到 Dart 的創做者將 Dart 明確的分紅了三個方向: 移動開發、DartVM 命令行程序(Server 端)、瀏覽器(前端)。express
對於沒有基礎的同窗也沒關係張,咱也是最近開始學。學習過 JavaScript
或者 Java/Kotlin
的人,在學習 Dart
上幾乎是沒什麼難度的,Dart 綜合了動態語言和靜態語言的特性,儘管Dart是強類型的,但類型聲明是可選的,由於Dart能夠推斷類型編程
本人博客數組
注意:未初始化的變量的初始值爲 null,即便是數字類型的變量,最初也是 null,由於數字在Dart中都是對象。一切皆對象 null 也是對象 在線運行Dart代碼瀏覽器
var name = "zhangsan"; // 隱式聲明(變量的類型會自動推斷)
// 經過指定類型的方式
String name = "zhangsan"; // 顯示聲明
Object name = "zhangsan"; // 通用對象聲明
dynamic name = "zhangsan"; // 動態對象聲明,這裏dynamic和Object是等價的,兩者鈞可被賦值爲其餘類型的對象
final name = "zhangsan"; // 不可變對象
...
複製代碼
用於修飾成員變量,這個變量是屬於類的,而不是屬於對象的,除此以外沒有其餘別的含義了 static 修飾符的使用方式和 Java 相似。 static 變量直到運行期被使用時纔會實例化編程語言
用於修飾變量,表示單賦值(single-assignment),使用 final 修飾的變量必須進行初始化,一旦被賦值以後,不可以再次被賦值,不然編譯會報錯ide
final name = "zhangsan"; // 正確
name = "lisi"; // 錯誤
複製代碼
Dart 中 const 是用來修飾某個值的函數
var list = const [1,2,2,3,4]; // 正確
var list = [1,2,3,4]; // 正確(使用const賦值聲明,const可省略)
// const須要是編譯時常量
const time = new DateTime.now(); //錯誤
複製代碼
final 和 const 的共同點:學習
聲明的類型能夠省略 - 初始化後不能再賦值 - 不能和var一塊兒使用ui
更多詳情請查閱 官方文檔
int 和 double 是 Numbers
的子類:
int testInt = 18; // int 整數值
複製代碼
double testDouble = 2.0 // 64-bit 雙精度浮點數
複製代碼
Dart 字符串是UTF-16編碼的字符序列,能夠使用單引號或者雙引號來建立字符串
能夠使用三個單引號或者雙引號建立多行字符串對象
能夠使用 r 前綴建立 "原始raw" 字符串
能夠在字符串中使用表達式: ${expression}, 若是表達式是一個標識符,能夠省略 {},若是表達式的結果爲一個對象,則 Dart 會調用對象的 toString()
函數來獲取一個字符串
String testString1 = 'string 1';
String testString2 = "string 2";
String testString3 = ''' String 1 String 3 ''';
String testString4 = r'String 4\n String 5';
class Expression{
String getString() => 'getString';
@override
String toString() {
return 'This is in getString class';
}
}
void main() {
var expression = new Expression();
print(expression);
print('String: ${expression.getString()}'); // getString
}
複製代碼
bool 這個類型有些特殊,在 Java 中未定義是 false,而在 Dart 裏 bool 對象未初始化的默認是 null
bool status;
print(status); // null
複製代碼
Dart 中能夠直接打印 List 包含 List 的元素,List 也是對象。Java 中直接打印 List 結果是地址值
Dart 中 List 的下標索引和 Java 同樣從0開始
和 Java 同樣支持泛型
List<String> arrList;
複製代碼
有增刪改查、支持倒序、自帶排序、洗牌,能夠使用 + 將 兩個 List 合併
List a = [1, 2, 3];
List b = [4, 5, 6];
List c = a + b;
print(c); // [1, 2, 3, 4, 5, 6];
複製代碼
和 Java 相似,映射是無序的鍵值對。經常使用的兩種定義方式
var test = Map();
var test2 = {
"a": "b",
"c": "d"
};
複製代碼
Map 的 key 和 value 類型是能夠指定的
var test3 = Map<int, String>();
test3[1] = "map 1"; // 正確
test3["2"] = "map 2"; // 錯誤,類型不正確
複製代碼
注意:key 必須是惟一的
Set 是沒有順序且不能重複的集合,因此不能經過索引去獲取值
var test = Set();
test.add(1);
test.add(1); // 重複元素無效
複製代碼
Runes 是 UTF-32
編碼的字符串。它能夠經過文字轉換成符號表情或者表明特定的文字
Runes runes = Runes('\u{1f605} \u6211');
var str = String.fromCharCodes(runes);
print(str); // 😅
複製代碼
這個更不經常使用。Symbol 標識符,主要是反射用,如今 mirrors 模塊已經被移除
字符串轉整數使用 int.parse()
String testString = '1234';
int testInt = int.parse(testString);
複製代碼
字符串轉浮點數使用 double.parse()
String testString = 123.123;
double testDouble = double.parse(testString);
複製代碼
數值轉字符串使用 toString()
int testInt = 1234;
String testString = testInt.toString();
複製代碼
描述 | 運算符 |
---|---|
後綴操做 | expr++ expr-- () [] . ?. |
前綴操做 | -expr !expr ~expr ++expr --expr |
乘除 | * / % ~/ |
加減 | + - |
位移 | << >> |
按位與 | & |
按位異或 | ^ |
按位或 | | |
類型操做 | >= > <= < as is is! |
想等 | == != |
邏輯與 | && |
邏輯或 | || |
是否爲空 | ?? |
三目運算 | expr1 ? expr2 : expr3 |
級聯 | .. |
賦值 | = *= /= ~/= %= += -= <<= >>= &= ^= |
一些基本實例:
a++
a--
a + b
a = b
c ? a : b
a is T
if (n % i == 0 && d % i == 0)
if (n % i == 0 || d % i == 0)
2 + 3 == 5
2 - 3 == -1
2 * 3 == 6
5 / 2 == 2.5 // 結果是double類型
5 ~/ 2 == 2 // 結果是一個整數
5 % 2 == 1 // 餘數
2 == 2 // true
2 != 3 // true
3 > 2 // true
2 < 3 // true
3 >= 3 // true
2 <= 3 // true
b ??= value // 若是b爲空,則將值分配給b;不然,b保持不變
a *= 3 // 賦值且相乘 a = a * 3
.....
複製代碼
本片文章到此結束,有喜歡個人文章的能夠關注我呦,寫的很差請諒解 。謝謝你們..