前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dart语法基础系列三《常量变量》

Dart语法基础系列三《常量变量》

作者头像
星宇大前端
发布2021-10-13 16:41:17
4490
发布2021-10-13 16:41:17
举报
文章被收录于专栏:大宇笔记

基本语法,先从变量开始。

Dart 变量声明基础


声明一个字符串:

代码语言:javascript
复制
main() {
  String str = 'hello wold';
  print(str);
}

同样可以使用const ,fiinal,var 来声明,由于不确定类型,会和TS、Swift、Kotlin一样类型推导

在这里插入图片描述
在这里插入图片描述

str 会被推导成字符串,然而并不会像js的var一样,dart 也是强类型语言。

在这里插入图片描述
在这里插入图片描述

默认值

未初始化的变量默认值是 null。即使变量是数字 类型默认值也是 null,因为在 Dart 中一切都是对象,数字类型 也不例外。

代码语言:javascript
复制
int lineCount;
assert(lineCount == null);

提示:语法检查不会让你使用null 的变量

dynamic 字段

dynamic 是动态的,类似于TS 和 Swift any 语法。编译期不做检查,在运行时决定类型。

代码语言:javascript
复制
main() {
  // var str = 'hello wold';
  // str = 3;
  // print(str);

  dynamic a = 3;
  a = '33';
  print(a);
}

dynamic 灵活但存在风险,少用谨慎使用。

常量final const 比较


final 和 const 都可以修饰变量,达到不可以更改的目的。

const

如果需要在编译时就固定变量的值,可以使用 const 类型变量。 如果 Const 变量是类级别的,需要标记为 static const。 在这些地方可以使用在编译时就已经固定不变的值,字面量的数字和字符串, 固定的变量,或者是用于计算的固定数字:

修饰变量更改

const 修改变量,然后更改,会报错。

代码语言:javascript
复制
main() {
  const name = 'zhangsan';
  name = 'lisi';
}

报错提示:Constant variables can't be assigned a value.

如果不初始化是否可以?
在这里插入图片描述
在这里插入图片描述

答案是不可以,const 必须初始化。

final

创建和设置一个 Final 变量:

代码语言:javascript
复制
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
如果不初始化是否可以?
代码语言:javascript
复制
main() {
  final name;
  name = '小明';
}
修饰变量更改
代码语言:javascript
复制
main() {
  final name;
  name = '小明';
  name = '小红';
}
在这里插入图片描述
在这里插入图片描述

Final 和 Const 比较总结

使用过程中从来不会被修改的变量, 可以使用 final 或 const, 而不是 var 或者其他类型, Final 变量的值只能被设置一次; Const 变量在编译时就已经固定 (Const 变量 是隐式 Final 的类型.) 最高级 final 变量或类变量在第一次使用时被初始化。

const 在编译时确定,相同内容优先取内存已有地址。

代码语言:javascript
复制
main() {
  List a1 = [1, 2, 3];
  List a2 = [1, 2, 3];
  print(identical(a1, a2));

  final a3 = [1, 2, 3];
  final a4 = [1, 2, 3];
  print(identical(a3, a4));

  const a5 = [1, 2, 3];
  const a6 = [1, 2, 3];
  print(identical(a5, a6));

  Array a7 = const Array.multi([1, 3, 4]);
  Array a8 = const Array.multi([1, 3, 4]);
  print(identical(a7, a8));
}

打印结果:

代码语言:javascript
复制
false
false
true
true

static 修饰静态变量

使用 static 关键字实现类范围的变量和方法。

静态变量(类变量)对于类级别的状态是非常有用的:

代码语言:javascript
复制
class Queue {
  static const initialCapacity = 16;
  // ···
}

void main() {
  assert(Queue.initialCapacity == 16);
}

静态变量只到它们被使用的时候才会初始化。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dart 变量声明基础
    • 默认值
      • dynamic 字段
      • 常量final const 比较
        • const
          • 修饰变量更改
          • 如果不初始化是否可以?
        • final
          • 如果不初始化是否可以?
          • 修饰变量更改
        • Final 和 Const 比较总结
          • static 修饰静态变量
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档