變數是“記憶體中的命名空間”,它用於存儲值。換句話說,變數用作為程式中值的容器。變數的名稱也稱為識別字。以下是識別字的命名規則 -
- 識別字不能是關鍵字。
- 識別字可以包含字母和數字。
- 識別字不能包含空格和特殊字元,但下劃線(
_
)和美元($
)符號除外。 - 變數名稱不能以數字開頭。
變數的語法
在使用變數之前必須先聲明變數。Dart使用var
關鍵字來標識一個變數。聲明變數的語法如下所示 -
var name = 'smith';
Dart中的所有變數都存儲對值的引用,而不是包含該值。name
變數包含對String
對象的引用,其值為 - Smith
。
Dart通過在變數名前加上數據類型首碼來支持類型檢查。類型檢查確保變數僅包含特定於數據類型的數據。下麵給出了相同的語法 -
String name = 'Maxsu';
int number = 99;
考慮以下示例 -
void main() {
String name = 1;
}
上面的代碼段將導致警告,因為分配給變數的值與變數的數據類型不匹配。
執行輸出結果如下 -
Warning: A value of type 'String' cannot be assigned to a variable of type 'int'
默認值
未初始化的變數的初始值為null
。即使是具有數字類型的變數的初始值也是null
,因為數字與Dart中的其他變數一樣,它們都是對象。以下示例說明了這個情況 -
void main() {
int num;
print(num);
}
輸出結果:
Null
dynamic 關鍵字
聲明沒有未指定靜態類型的變數則會隱式聲明為 dynamic
。也可以使用dynamic
關鍵字代替var
關鍵字聲明變數。
參考以下示例 -
void main() {
dynamic x = "tom";
print(x);
}
final和Const
final
和const
關鍵字用於聲明常量。在Dart中不能修改使用final
或const
關鍵字聲明變數的值。這些關鍵字可以與變數的數據類型一起使用,也可以與var
關鍵字一起使用。
const
關鍵字用於表示編譯時常量。使用const
關鍵字聲明的變數是隱式final
。
final關鍵字語法
final variable_name
// 或者
final data_type variable_name
示例:
void main() {
final val1 = 12;
print(val1); // 輸出:12
}
const關鍵字語法
const variable_name
// 或者
const data_type variable_name
示例:
void main() {
const pi = 3.14;
const area = pi*12*12;
print("The output is ${area}"); // 輸出: 452.15999999999997
}
注 - 只有
const
變數可用於計算編譯時常量。編譯時常量是常量,其值將在編譯時確定。
示例
如果嘗試修改使用final
或const
關鍵字聲明的變數,Dart會拋出異常。如下面給出的例子 -
void main() {
final v1 = 12;
const v2 = 13;
v2 = 12;
}
執行上面代碼將拋出以下錯誤 -
$dart main.dart
Unhandled exception:
cannot assign to final variable 'v2='.
NoSuchMethodError: cannot assign to final variable 'v2='
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:176)
#1 main (file:///home/cg/root/3257025/main.dart:4:4)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:255)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:142)
`