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

相关推荐
程序员老刘1 分钟前
Dart Skills CLI 1.0发布,老刘年初的预言兑现了
flutter·ai编程·dart
by组态3 分钟前
Ricon组态系统API参考手册
前端·后端·物联网
君顾16 分钟前
外卖CPS系统开发实战指南:从架构设计到部署全流程解析
java·开发语言·外卖
前端逗比逗6 分钟前
AI 前端落地实战:SSE 流式输出、断点续传、打字机渲染
前端·webassembly
晴天1634 分钟前
前端跨域方案解析:JSONP 的原理、实战与演进
前端·状态模式
web打印社区35 分钟前
浏览器静默打印?先别装第三个库了
前端·vue.js·chrome·electron·pdf
艾伦野鸽ggg37 分钟前
前端异步请求的状态竞争(请求竞态)问题
前端·javascript·axios
是立不是利41 分钟前
前端交互基石:深入剖析JavaScript三级联动背后的设计哲学
开发语言·前端·javascript
动恰客流统计1 小时前
传统红外对射客流统计为何逐步淡出主流?准确率与场景限制深度分析
大数据·前端·人工智能