Flutter開發語言Dart與Java的一些直觀區別

介紹

Dart 是 Flutter 的主要開發語言,Flutter 是一個來自 Google 用於移動應用開發的 SDK。其實對於Java開發人員來說Dart,還是相對好理解的,這篇筆記將記錄初學Dart時,相比較Java的一些區別。

區別

構造函數

在Dart的構造中可以沒有方法體。

//這樣寫很簡單
User(this.cadence, this.speed, this.gear);

//也可以寫成這樣
Bicycle(int cadence, int speed, int gear) {
  this.cadence = cadence;
  this.speed = speed;
  this.gear = gear;
}

可選參數

在Dart中可以使用可選參數、無論是構造還是普通方法。

Book({this.money = 100, this.size = 0, this.author = null});

調用的時候要指定參數名

main() {
  print(Book(money:100 , size: 88, author:'test'));
  print(Book(money:99,   size:100));
  print(Rectangle());
}

關鍵字

  • 在 Dart 中沒有諸如 public、private、protected 這樣的關鍵詞。
    如果一個標識符以 (_) 開頭,則該標識符 在庫內是私有的
  • Dart2中,可以不使用new關鍵字創建,也可以使用。

變量

  • Dart中變量初始值爲null,即使是int類型也是null。
  • Dart支持自識別,可以是用var定義變量,也可以直接指定具體類型。
  • 如果你以後不打算修改一個變量,使用 final 或者 const。 一個 final 變量只能賦值一次;一個 const 變量是編譯時常量。

基本類型

  • int和double是num的子類。沒有float類型。
  • Dart中所有的類都是Object的子類。
  • String可以使用單引號或者雙引號。
  • String支持模板,使用 ${expression} 的方式來實現字符串模板的效果,如果該表達式僅僅是一個標識符,還可以去掉花括號 $variableName。
  • 字符串前加r代表原始字符串。
  • 只有true和flase是bool類型,這兩個對象也是編譯時常量。當Dart需要一個布爾值的時候,只有true對象才被認爲true,其他都是false。

方法

  • Dart是一個真正面向對象的語言,方法也是對象並且具有一種類型Function。
  • 可以使用上文說的可選方法。
  • 支持直接設置默認參數值。
  • 所有函數都返回一個值,如果沒有指定返回值,則 默認把語句 return null; 作爲函數的最後一個語句執行。
  • 可以把方法當做參數調用另一個方法。
printElement(element) {
  print(element);
}

var list = [1, 2, 3];

// Pass printElement as a parameter.
list.forEach(printElement);
  • 方法也可以賦值給一個變量
var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!';
assert(loudify('hello') == '!!! HELLO !!!');

操作符

  • ??
expr1 ?? expr2
如果 expr1 是 non-null,返回其值; 否則執行 expr2 並返回其結果。
  • .? 可以避免表達式左邊對象爲null時候拋出異常。

  • 級聯操作符,級聯操作符 (…) 可以在同一個對象上 連續調用多個函數以及訪問成員變量。

querySelector('#button') // Get an object.
  ..text = 'Confirm'   // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));
  • 類型判定操作符

as、 is、 和 is! 操作符是在運行時判定對象 類型的操作符:

as 類型轉換

is 如果對象是指定的類型返回 True

is! 如果對象是指定的類型返回 False

只有當 obj 實現了 T 的接口, obj is T 纔是 true。例如 obj is Object 總是 true。


斷言

Dart中支持assert這個斷言方法。如果方法結果true,繼續執行,如果false則拋出異常。這個方法在正式包中將不執行。

// assert(條件);

##總結
Dart和Java還是很相似的,對於Java程序員也是相對容易上手的,由於現在是初學,只總結了一些常用的,當然區別遠遠不止這些,總結大多是Dart中有的Java中沒有的東西,會不斷補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章