Dart面试题更新 2026-08-05

在 Dart 语言中,final 和 const 关键字有何不同?请解释它们的作用和适用场景。

技术原理Dart

考察说明

考察对 Dart 中 final 和 const 关键字的理解,包括变量的不可变性和编译时常量的区别。

回答思路

  1. 【回答框架 1】final 定义的是运行时常量,一旦赋值就不能再改变,但可以在运行时才确定值,例如 final x = DateTime.now()。
  2. 【回答框架 2】const 定义的是编译时常量,要求在编译时就确定值,且必须使用 const 上下文,例如 const y = 3.14。const 可以用于变量、对象和集合的创建,创建的对象本身也是不可变的。
  3. 【回答框架 3】在性能上,const 可以带来编译优化,因为值在编译时已知,甚至可以内联;final 则没有这些优化。在应用场景上,final 通常用于初始化后不再改变的对象引用,而 const 用于定义固定不变的常量值,如算法中的数学常数或配置项。
  4. 【关键点 1】final 变量只能赋值一次,但值可在运行时确定。
  5. 【关键点 2】const 变量是编译时常量,其值必须在编译时已知且不可变。
  6. 【关键点 3】const 可以创建不可变对象,final 不能。
  7. 【易错点 1】容易混淆:const 变量也是 final,但 final 不一定是 const。
  8. 【易错点 2】const 要求是编译时常量,不能用于运行时计算的值。