Flutter 之 Dart 基礎語言入門

前言

接下來一段時間自己可能要慢慢接觸Flutter,Flutter採用Dart語言開發。因爲前些時間開發過微信小程序,
對於我這種不怎麼接觸前端語言的人來說,學習起來還是需要花費一定的時間和精力。而Flutter開發的話
對於原生開發來說比較容易接受。

介紹

Dart在靜態語法方面和Java非常相似,如類型定義、函數聲明、泛型等。
而在動態特性方面又和JavaScript很像,如函數式特性、異步支持等。
總的來說,個人理解Dart有以下幾點好處
1、Dart可基於AOT(Ahead Of Time)編譯,字面意思是提前編譯,運行性能高。
2、Dart也可以基於JIT(Just In Time)編譯,字面意思是即時編譯,編譯快速、支持熱加載。
3、Dart語法結合了Java語法特點,對於Java程序員來說比較友好,容易上手。

好了,說這麼多,今天的主題是寫寫Dart的語言入門。

在說變量之前,先簡單貼個Hello world.哈哈。

void  main(){
    print("hello world!");
}

每個應用都有一個 main() 函數。相當於程序主入口。

變量,在 Dart 裏定義變量的方式有 var、dynamic、Object、const這幾種。

var

var可以接收任何類型的變量,類似於JavaScript中的 var ,不過JavaScript的 var 變量的值可以是
多類型的,而Dart的var 變量一旦賦值,類型便會確定,不能再改變。因爲Dart本身就是跟Java
一樣是強類型語言。

main() {
  var name = "LIN";
  var age = 18;
  int score = 98;//通過顯式指定類型來定義變量
  
  print('name is:'+name+',  age is:'+age.toString()+',   score is:'+score.toString());
}

一種方式是變量可以直接用關鍵字聲明var,這樣的話不用指定類型,由它自動推斷; 第二種方式是通過顯式指定類型來定義變量。使用var定義變量,即使未顯式指定類型,一旦賦值後類型就被固定,使用var定義的變量不能改變數據類型。

dynamic和Object

當我們需要動態改變變量的類型的時候,這個時候,就可以用dynamic和Object來定義變量類型。

main() {
  dynamic name = "Lin";
  name = 19;
  
  Object name2 = 20;
  name2 = "Alice";
  
  print('name is:'+name.toString());
  print('name2 is:'+name2.toString());
}

雖然提供了這個功能,不過個人覺得,可能Java開發者都比較習慣使用顯示聲明類型,畢竟可以提供代碼可讀性和方便調試吧。

const和final

const和final是Dart中定義常量的兩種方式,初始化後不能再賦值。

main() {
  final width = 10;//使用final聲明
  const PI = 3.14;//使用const聲明
}
  

需要注意的是,final定義的常量是運行時常量,而const常量則是編譯時常量。個人理解,final運行時要有確定的值,而const需要編譯時就有確定的值:

main() {
  final time = new DateTime.now(); // 沒報錯
  const t = new DateTime.now(); // 報錯
}

const和final的區別

共同點:

(1)類型聲明都可以省略;

(2)初始化後都不能再賦值;

(3)不能和var同時使用。

不同點:

(1)類級別的常量,通常用 static const;

(2)const可以使用其他const常量的值來初始化其值;

(3)需要確定的值,final運行時要有確定的值,const需要編譯時就有確定的值。

 

數據類型的常見操作:

main() {
  //String 轉 int 
  var one = int.parse('100');
  print("one:"+one.toString());
  //String 轉 double
  var two = double.parse('2.35');
  print("two:"+two.toString());
  //int 轉 String
  int num = 100;
  String three = num.toString();
  print("three:"+three);
  // double 轉 String
  double num2 = 3.14159;
  String four = num2.toStringAsFixed(2);//保留小數點後兩位
  print("four:"+four);
}

字符類型的常見操作:

main() {
  //1、跟Java一樣使用 + 進行字符串拼接
  String s1 = "123" + 'abc';
  //2、可以使用三引號或三個單引號來創建包含多行的字符串
  String s2 = '''第一行
  第二行''';
  String s3 = """第一行
  第二行""";
  
  var name = "李雷";
  var s4 = "hello,${name}";//插值表達式"${}",也可以用於拼接字符串

  print("s1:"+s1);
  print("s2:"+s2);
  print("s3:"+s3);
  print("s4:"+s4);
}

布爾類型
Dart中的布爾類型與Java還是有點不一樣的,只有false和true兩個值,而Java可以用0或非0表示,Dart
的布爾類型不行,還有一個不同的是,布爾類型的默認值爲null。

main() {
  bool flag;
  print(flag);    // null
}

今天這回我們就到這裏吧。下次繼續函數的學習。

共勉。

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