Skip to content

变量与常量

变量

变量是程序中存储数据的容器,Dart 中的变量使用 var、明确类型、或 dynamic 声明。

变量声明方式

  1. 使用 var

    • 自动推断数据类型,声明时必须初始化。
    dart
    var name = 'Alice'; // 自动推断为 String
    var age = 25;       // 自动推断为 int
    • 变量类型一经确定,后续不能赋值为其他类型。

    下面的代码在 JavaScript 中运行是合法的,但在 Dart 中会报错。原因就是 Dart 是一种强类型语言,任何变量都是有确定类型的,变量类型一经确定,后续不能赋值为其他类型。

    所以在 Dart 中使用 var 声明变量时,Dart 在编译时会根据变量的初始值自动推断变量的类型,在编译结束后,变量类型就确定了。而 JavaScript 是一种弱类型语言,变量的类型是在运行时确定的,所以 JavaScript 中可以随意改变变量的类型,var 只是声明变量的方式而已。

    dart
    var value = 42; 
    value = 'Hello'; // ❌ 编译错误:类型不匹配
  2. 使用具体类型

    • 可以显式声明变量类型。
    dart
    String name = 'Bob';
    int age = 30;
    double height = 1.75;
    bool isStudent = true;
    • 避免类型推断可能带来的困惑,代码更清晰。
  3. 使用 dynamic

    • dynamic 允许变量在运行时更改类型。
    dart
    dynamic something = 'Hello';
    something = 42; // ✅ 允许类型更改
    • 使用 dynamic 会减少类型安全性,应谨慎使用。

未初始化的变量

  • Dart 中未初始化的变量会有默认值:
    • 数字类型默认为 0
    • 布尔类型默认为 false
    • 引用类型默认为 null
    dart
    int x;        // 默认值为 0
    bool isTrue;  // 默认值为 false
    String text;  // 默认值为 null

变量作用域

  • 局部变量:在函数或代码块中声明,仅在其作用域内有效。
  • 全局变量:在函数外部声明,作用于整个文件。

常量

常量是指声明后值不能改变的变量,Dart 提供两种方式定义常量:finalconst

使用 final

  • final 声明的变量在首次赋值后不能改变。
  • final 的值可以在运行时确定。
dart
final name = 'Alice';
final currentTime = DateTime.now(); // ✅ 运行时确定
name = 'Bob'; // ❌ 编译错误:无法重新赋值

使用 const

  • const 声明编译时常量,值必须在编译期间确定。
  • const 定义的值是不可变的,并且会被分配到编译时常量池中。
dart
const pi = 3.14159;
const items = [1, 2, 3]; // 编译时常量
const time = DateTime.now(); // ❌ 编译错误:值必须在编译时确定

final 和 const 的区别

特性finalconst
值是否可变不可变不可变
值何时确定运行时确定编译时确定
使用场景使用需要运行时计算的值使用已知的编译时常量值

示例代码

dart
void main() {
  // 使用 var 声明变量
  var name = 'Dart';
  print(name); // 输出: Dart
  
  // 使用具体类型声明变量
  int age = 25;
  double height = 1.75;
  bool isDeveloper = true;
  print('Age: $age, Height: $height, Developer: $isDeveloper');
  
  // 使用 dynamic 声明变量
  dynamic variable = 'Hello';
  print(variable); // 输出: Hello
  variable = 42;
  print(variable); // 输出: 42
  
  // 使用 final 声明常量
  final currentTime = DateTime.now();
  print('Current Time: $currentTime');
  
  // 使用 const 声明常量
  const pi = 3.14159;
  print('Pi: $pi');
}
编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!