Flutter第二节----Dart中的常量与变量

目录

一.Dart的变量声明-----var

二.Dart中的常量声明-----const

三.Dart中的常量声明-----final

[var、const、final 核心区别对比](#var、const、final 核心区别对比)

四.总

本节系统讲解了 Dart 语言中三种核心的变量与常量声明方式:varconstfinal。我们将深入探讨它们各自的语法、特性、适用场景以及核心区别,并通过代码示例帮助您快速掌握如何在实际开发中正确选择和使用它们。

目标读者: Dart/Flutter 初学者、希望巩固变量声明基础知识的开发者,以及需要清晰理解 const 与 final 区别的编程爱好者。

一.Dart的变量声明-----var

语法:var 变量名=值/表达式;

注意:var在第一次赋值之后,类型被确定 后面不允许更改类型

特点:const是代码编译前被确定的,不允许表达式中有变量存在,必须有常量或者固定值

代码实例:

Dart 复制代码
void main(List<String> args) {
  var age=20;    //var第一次赋值之后,类型被确定 后面不允许更改类型
  print(age);
  age=21;
  print(age);
  var age1=15+17;
  print(age1);
}

var在第一次赋值之后,类型被确定 后面不允许更改类型,如上图所示age的类型为整型int,如果我们将其改为字符型char会发生什么呢?如图所示可以看到改完后报错了。

二.Dart中的常量声明-----const

场景:在数学中圆周率π永远是3.1415926....,是不允许被改变的,因此使用const来进行声明同类

语法:const 属性名=值/表达式;

注意:const表达式里面的值不允许有变量值

代码示例:

1.正常代码:

Dart 复制代码
void main(List<String> args) {
  const num1=3.1415926;    
  const length = 2 * num1 * 10;
  print(length);
}

2.注意事项演示代码:

Dart 复制代码
void main(List<String> args) {
  var num1=3.1415926;    
  const num=num1;             //num1为变量,将变量引入const运行就会出错
  const length = 2 * num * 10;
}

三.Dart中的常量声明-----final

场景:需要当前时间作为当前唯一的操作时间,时间一旦被确定就不可以被修改。

语法:final 属性名=值/表达式;

特点:final变量在运行时被初始化,其值设置后不可修改。

代码实例:

Dart 复制代码
void main(List<String> args) {
    final time = DateTime.now();
    print(time);
}

2.const 与 final的区别:

Dart 复制代码
void main(List<String> args) {
    final time = DateTime.now();
    time = DateTime.now();
    print(time);
}

两者的区别在于final是运行时不可以修改,const是编译时确认不可修改。

var、const、final 核心区别对比

下表清晰地对比了 var、const、final 三者在初始化时机、值可变性、类型要求和使用场景上的核心区别:

特性 var const final
初始化时机 运行时(第一次赋值时) 编译时 运行时
值可变性 可重新赋值(同类型) 不可更改 不可更改
类型要求 类型在第一次赋值时确定,之后不可更改类型 必须是编译时常量,表达式不能包含变量 可以是运行时确定的常量或变量
使用场景 值需要改变的变量 编译时就能确定且不会改变的值(如数学常数、配置值) 运行时才能确定且不会改变的值(如当前时间、API 响应结果)
示例 var age = 20; age = 21; // 允许 const pi = 3.1415926; const length = 2 * pi * 10; // 允许 final time = DateTime.now(); // time = DateTime.now(); // 错误,不可重新赋值

四.总结

本章介绍了 Dart 语言中三种主要的变量和常量声明方式,它们各有特点,适用于不同的场景:

  • var:用于声明变量,类型在第一次赋值时确定,之后不可更改类型,但可以重新赋值。
  • const:用于声明编译时常量,值必须在编译时确定,不允许在表达式中使用变量。
  • final:用于声明运行时常量,值在运行时初始化,一旦赋值后不可更改。

核心区别:

  • const vs final:const 是编译时常量,值在编译时确定;final 是运行时常量,值在运行时确定。
  • var vs const/final:var 声明的变量可以重新赋值(同类型),而 const 和 final 声明的常量一旦赋值后不可更改。

使用建议:

  • 如果值在编译时就能确定且不会改变,使用 const
  • 如果值在运行时才能确定且不会改变,使用 final
  • 如果值需要改变,使用 var

掌握这三种声明方式的区别,有助于编写更高效、更安全的 Dart 代码。

相关推荐
石小石Orz2 小时前
我发现了开发者AI产品营收的新方向
前端·虚拟现实
老马识途2.02 小时前
关于跨域问题的总结
java·前端
魔力女仆3 小时前
分享一个 JS 鼠标跟随贪吃蛇背景库
开发语言·javascript·计算机外设
2401_894915534 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
麻瓜老宋4 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十二步,分号赋值链式修复、TOKEN_ASSIGN
c语言·开发语言·atomcode
别惊醒渔人4 小时前
Vue3 Diff 优化:最长递增子序列 LIS
前端·javascript·vue.js
颜酱4 小时前
07 | 把字段与指标同步到 Qdrant(生成阶段)
前端·人工智能·后端
用户059540174465 小时前
把AI长期记忆测试从手动验证换成pytest,2天揪出11个隐藏Bug
前端·css
Larcher5 小时前
从“加载模型”界面到端侧推理:拆解一个 React + WebGPU 大模型 Demo
javascript·后端
Larcher5 小时前
从状态快照到惰性初始化:读懂 React useState 的三个关键场景
javascript·人工智能·后端