一、共同點
都是常量,一但賦值就不可修改。
二、不同點
const:編譯時常量,其值在編譯時就能確定。
final:運行時常量,其值在程序運行時才能確定。
三、什麼是編譯時常量
- 其值在編譯時就能確定。
- 無需重複創建實例,在內存中只有一份。
對等 Java 中的寫法:
// Java 寫法:
public class MyClass {
public static final int TYPE = 1;
}
// Dart 寫法:
public class MyClass {
static const int TYPE = 1;
}
三、示例
class Point {
final num x, y;
const Point(this.x, this.y);
}
main() {
var p1 = const Point(0, 0);
var p2 = const Point(0, 0);
print(p1 == p2);
print(p1 === p2);
}
輸出結果:
true
true
四、補充
- 聲明類成員變量時,const 變量必須同時被聲明爲 static 的。
- const 變量只能在定義的時候初始化。
- final 變量可以在構造函數參數列表或者初始化列表中初始化。
- 在文件中,變量不能聲明爲 static。