| 特性 | final | const |
|---|---|---|
| 值确定时间 | 运行时 (Runtime) | 编译时 (Compile-time) |
| 内存与性能 | 普通对象,每次使用都会创建新实例 | 常量池复用,相同值共享同一内存,性能更优 |
| 变量可修改性 | 变量引用不可变 | 变量引用不可变 |
| 对象内容可变性 | 对象内部可以修改 | 对象本身及其内容完全不可变 |
| 适用场景 | 值需要在运行时才能确定,如 DateTime.now() | 值在编译时就能确定,如 3.14、"hello" |
| 类成员变量 | 可以,final 修饰 | 不可以,需要使用 static const |
final list = [1, 2];
// list = [3, 4]; // ❌ 错误:不能重新赋值
list.add(3); // ✅ 正确:可以修改列表内容
print(list); // 输出 [1, 2, 3]
const list = [1, 2];
// list = [3, 4]; // ❌ 错误:不能重新赋值
// list.add(3); // ❌ 错误:不能修改内容