创建变量并初始化的例子:
var name = '永动机';
变量存储引用。名为name的变量包含对String对象的引用,其值为“永动机”。
name变量的类型被推断为String,但你可以通过指定它来更改该类型。如果对象不限于单个类型,请按照设计准则指定对象或动态类型。
dynamic name = '永动机';
另一种选择是显式声明可以推断出的类型:
String name = 'Bob';
默认值-Default value
未初始化的变量的初始值为null。即使是具有number类型的变量最初也是null,因为在Dart中所有内置类型包括number都是对象。
int lineCount;
assert(lineCount == null);
注意:生产代码中将忽略
assert()
调用。在开发期间,assert(condition)
抛出异常,除非条件为真。
Final 和 const
如果你从不打算更改变量,请使用final或const,而不是var或类型。final变量只能设置一次;const变量是编译时常量。(const变量是隐式的final变量)final的顶级变量或类变量在第一次使用时初始化。
注意:实例变量可以是final,但不是const。必须在构造函数体启动之前初始化最终实例变量 - 在变量声明,构造函数参数或构造函数的初始化列表中。
以下是创建和设置final变量的示例:
final name = '永动机'; // 没有类型注释
final String nickname = '你需要一台永动机';
你无法修改final变量的值
name = 'Alice'; // 错误:final变量只能设置一次。
对于要成为编译时常量的变量,请使用const
。如果const变量在类级别,则将其标记为static const
。如果const变量在类级别,则将其标记为static const。 在声明变量的地方,将值设置为编译时常量,例如数字或字符串文字,const变量或常数上的算术运算结果:
const bar = 1000000; // 压力单位 (dynes/cm2)
const double atm = 1.01325 * bar; // 标准大气压
const关键字不仅用于声明常量变量。你还可以使用它来创建常量值,以及声明创建常量值的构造函数。任何变量都可以具有常量值
var foo = const [];
final bar = const [];
const baz = []; // 相当于 `const []`
你可以从const声明的初始化表达式中省略const,就像上面的baz一样。
foo = [1, 2, 3]; // 相当于 const [1,2,3]
你无法更改const变量的值:
baz = [42]; //错误:无法为常量变量赋值。
有关使用const创建常量值的更多信息,请参阅Lists,Maps和Classes。