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 代码。

相关推荐
言乐61 小时前
Python实现建造微服务商城后台
开发语言·python·算法·微服务·架构
YHHLAI1 小时前
[特殊字符] Agent 智能体开发实战 · 第一课:Tool Use —— 让大模型自动干活
前端·人工智能
nuIl1 小时前
我把 5 个编码 Agent 塞进了一个 npm 包
前端·agent·claude
L-影1 小时前
FastAPI 静态文件:Web 页面的“固定展柜”与“加速引擎”
前端·fastapi
陪我去看海2 小时前
受够了 AI 写完代码留下一堆端口?我做了一个端口管理App!
前端·macos·vibecoding
Xuepoo2 小时前
我抛弃了 DOM,但保留了无障碍访问
前端
李明卫杭州2 小时前
Vue2 vs Vue3 的 h 函数:渲染函数完整迁移指南
前端
cui_ruicheng2 小时前
Python从入门到实战(六):非序列容器
开发语言·python
月光刺眼2 小时前
用LangChain 打造第一个 Agent:LLM 大脑与 Tool 手脚的完整闭环
javascript·人工智能·全栈
西西学代码2 小时前
Flutter---Container
flutter