变量是“存储器中的命名空间”,用于存储值。 换句话说,它作为程序中值的容器。 变量名称称为标识符。 以下是标识符的命名规则
- 标识符不能是关键字。
- 标识符可以包含字母和数字。
- 标识符不能包含空格和特殊字符,但下划线(_)和美元($)符号除外。
- 变量名称不能以数字开头。
Type 语法
必须在使用变量之前声明变量。 Dart使用var关键字来实现相同的目标。 声明变量的语法如下所示
var name = 'pipipi';
dart中的所有变量都存储对值的引用,而不是包含该值。 名为name的变量包含对String对象的引用,其值为“pipipi”。
Dart通过在变量名前加上数据类型前缀来支持类型检查。 类型检查确保变量仅包含特定于数据类型的数据。 下面给出了相同的语法
String name = 'pipipi'; int num = 10;
请思考以下示例:
void main() { String name = 1; }
上面的代码段将导致警告,因为分配给变量的值与变量的数据类型不匹配。
输出
Warning: A value of type 'String' cannot be assigned to a variable of type 'int'
所有未初始化的变量的初始值为null。 这是因为Dart将所有值都视为对象。 以下示例说明了相同的内容
void main() { int num; print(num); }
输出
Null
dynamic keyword (动态关键字)
声明没有静态类型的变量被隐式声明为动态。 也可以使用dynamic关键字代替var关键字声明变量。
以下示例说明了相同的内容。
void main() { dynamic x = "tom"; print(x); }
输出
tom
Final 和Const
final和const关键字用于声明常量。 Dart阻止修改使用final或const关键字声明的变量的值。 这些关键字可以与变量的数据类型一起使用,也可以与var关键字一起使用。
const关键字用于表示编译时常量。 使用const关键字声明的变量是隐式最终的。
final关键字
final variable_name
或
final data_type variable_name
const 关键字
const variable_name
或
const data_type variable_name
例子– final
void main() { final val1 = 13; print(val1); }
输出
13
例子– const
void main() { const pi = 3.14; const area = pi*12*12; print("结果是: ${area}"); }
上面的例子使用const关键字声明了两个常量pi和area。 区域变量的值是编译时常量。
输出
结果是:452.15999999999997
注意: 只有const变量可用于计算编译时常量。 编译时常量是常量,其值将在编译时确定。
例子
如果尝试修改使用final或const关键字声明的变量,Dart会抛出异常。 下面给出的例子说明了相同的例子:
void main() { final v1 = 12; const v2 = 13; v2 = 12; }
上面给出的代码将抛出以下错误:
Unhandled exception: cannot assign to final variable 'v2='. NoSuchMethodError: cannot assign to final variable 'v2=' #0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:178) #1 main (file: Test.dart:5:3) #2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) #3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)