前言
接下來一段時間自己可能要慢慢接觸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
}
今天這回我們就到這裏吧。下次繼續函數的學習。
共勉。