Flutter第二节----Dart中的常量与变量 目录一.Dart的变量声明-----var二.Dart中的常量声明-----const三.Dart中的常量声明-----finalvar、const、final 核心区别对比四.总本节系统讲解了 Dart 语言中三种核心的变量与常量声明方式var、const和final。我们将深入探讨它们各自的语法、特性、适用场景以及核心区别并通过代码示例帮助您快速掌握如何在实际开发中正确选择和使用它们。目标读者Dart/Flutter 初学者、希望巩固变量声明基础知识的开发者以及需要清晰理解 const 与 final 区别的编程爱好者。一.Dart的变量声明-----var语法var 变量名值/表达式注意var在第一次赋值之后类型被确定 后面不允许更改类型特点const是代码编译前被确定的不允许表达式中有变量存在必须有常量或者固定值代码实例void main(ListString args) { var age20; //var第一次赋值之后类型被确定 后面不允许更改类型 print(age); age21; print(age); var age11517; print(age1); }var在第一次赋值之后类型被确定 后面不允许更改类型如上图所示age的类型为整型int如果我们将其改为字符型char会发生什么呢如图所示可以看到改完后报错了。二.Dart中的常量声明-----const场景在数学中圆周率π永远是3.1415926....,是不允许被改变的因此使用const来进行声明同类语法const 属性名值/表达式注意const表达式里面的值不允许有变量值代码示例1.正常代码void main(ListString args) { const num13.1415926; const length 2 * num1 * 10; print(length); }2.注意事项演示代码void main(ListString args) { var num13.1415926; const numnum1; //num1为变量将变量引入const运行就会出错 const length 2 * num * 10; }三.Dart中的常量声明-----final场景需要当前时间作为当前唯一的操作时间时间一旦被确定就不可以被修改。语法final 属性名值/表达式特点final变量在运行时被初始化其值设置后不可修改。代码实例void main(ListString args) { final time DateTime.now(); print(time); }2.const 与 final的区别void main(ListString args) { final time DateTime.now(); time DateTime.now(); print(time); }两者的区别在于final是运行时不可以修改const是编译时确认不可修改。var、const、final 核心区别对比下表清晰地对比了 var、const、final 三者在初始化时机、值可变性、类型要求和使用场景上的核心区别特性varconstfinal初始化时机运行时第一次赋值时编译时运行时值可变性可重新赋值同类型不可更改不可更改类型要求类型在第一次赋值时确定之后不可更改类型必须是编译时常量表达式不能包含变量可以是运行时确定的常量或变量使用场景值需要改变的变量编译时就能确定且不会改变的值如数学常数、配置值运行时才能确定且不会改变的值如当前时间、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 finalconst 是编译时常量值在编译时确定final 是运行时常量值在运行时确定。var vs const/finalvar 声明的变量可以重新赋值同类型而 const 和 final 声明的常量一旦赋值后不可更改。使用建议如果值在编译时就能确定且不会改变使用const。如果值在运行时才能确定且不会改变使用final。如果值需要改变使用var。掌握这三种声明方式的区别有助于编写更高效、更安全的 Dart 代码。

相关新闻

最新新闻

Claude Projects项目健康度诊断工具(内部泄露版):输入3个指标,自动生成风险热力图与修复优先级清单

Claude Projects项目健康度诊断工具(内部泄露版):输入3个指标,自动生成风险热力图与修复优先级清单

更多请点击: https://codechina.net 第一章:Claude Projects项目健康度诊断工具概览 Claude Projects 是 Anthropic 推出的面向团队协作的 AI 编程工作区,其内置的项目健康度诊断工具(Project Health Diagnostics)用…

2026/7/9 3:51:22
从Prompt工程到Agent编排:Claude vs ChatGPT在MCP(Multi-Step Cognitive Planning)能力上的断层差距(附可复现评测框架)

从Prompt工程到Agent编排:Claude vs ChatGPT在MCP(Multi-Step Cognitive Planning)能力上的断层差距(附可复现评测框架)

更多请点击: https://kaifayun.com 第一章:从Prompt工程到Agent编排:MCP能力演进的范式跃迁 Prompt工程曾是大模型应用的主流范式——通过精心设计输入文本引导模型生成预期响应。然而,随着任务复杂度提升,单一提示难…

2026/7/9 3:51:22
信息安全毕业设计2026开题推荐

信息安全毕业设计2026开题推荐

文章目录🚩 1 前言1.1 选题注意事项1.1.1 难度怎么把控?1.1.2 题目名称怎么取?1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢?🚩2 选题概览🚩 3 项目概览题目1 : 图像隐写算法研究与…

2026/7/9 3:51:22
具身智能多链路通信系统

具身智能多链路通信系统

具身智能对通信的可靠性要求极高,这不仅体现在其在对带宽的高要求,也体现在其对延时的高要求,很多为具身智能配套通信方案的公司,为实现更高的带宽,往往采用传统的MP-TCP架构,但这种架构在满足高带宽的同时…

2026/7/9 3:51:22
不吹不黑,DeepSeek 编程实测翻车:这些低级问题暴露真实水平

不吹不黑,DeepSeek 编程实测翻车:这些低级问题暴露真实水平

不吹不黑,DeepSeek 编程实测翻车:这些低级问题暴露真实水平用 DeepSeek 写了一周代码,坦白说——体验不太理想。不是复杂算法写不出来,而是在工程基本功上频频踩坑:字符串拼 YAML、改完不编译、看到版本号数字小就往上…

2026/7/9 3:51:22
【限时技术白皮书】:Claude 3.5 Opus与GPT-4o Turbo的LLM选型决策树(含21个垂直领域适配矩阵)——仅开放72小时下载权限

【限时技术白皮书】:Claude 3.5 Opus与GPT-4o Turbo的LLM选型决策树(含21个垂直领域适配矩阵)——仅开放72小时下载权限

更多请点击: https://intelliparadigm.com 第一章:Claude 3.5 Opus与GPT-4o Turbo的选型决策总览 在构建面向企业级知识处理与实时交互的AI系统时,模型选型直接影响响应质量、延迟表现与合规成本。Claude 3.5 Opus 与 GPT-4o Turbo 分别代表…

2026/7/9 3:46:22

月新闻