Dart-变量与常量

变量是‘存储器中的命名空间’,用于存储值.变量名称称为标识符,标识符命名规则:

  • 标识符不能是关键字
  • 标识符可以包含数字和字母
  • 标识符不能包含空格和特殊字符,但下划线(_)和美元($)符号除外
  • 变量名称不能以数字开头;
语法:
  • 使用var声明变量可以赋值不同类型的值
  • 没有赋初值的变量都会默认为null
  • 使用final声明一个只能赋值一个变量
  • 使用const声明一个常量
  • 使用const声明必须是编译时的常量
代码示例:
//变量

  //赋值不同类型的值
  var a;
  print(a);//result:null

  a = 20;//运行时确定的变量
  print(a);//result:20

  a = 'dart';
  print(a);//result:dart

  final b = 20;

//  b = 50;//final声明一个只能赋值一次变量

//常量


  const c = 20;//编译期确定的常量
//  c = 50;
  print(c);

  var list = const[1,2,3,4];
  var obj = const Object();
dynamic关键字
没有声明明确的类型,动态类型;
final和const区别
  • final:表示单一赋值,final变量或字段必须初始化,一旦初始化,就不能改变final变的值,final修饰变量;
  • const:const修饰值,可以在创建集合使用,构造对象使用,意味着对象的整个深度状态可以在编译时完全确定,并且对象被冻结完全不可变;使用const关键字声明的变量是隐式的final,只有const变量可用于计算编译时常量.编译时常量是常量,其值在编译时确定.
dynamic、Object、var
  • var和dynamic完全是俩个概念,不应该放在一起比较,var实际是编译器抛出的语法糖,一旦被编译,编译器就会自动匹配var变量的实际类型,并用实际类型替换该变量的声明,等同于我们在编码时使用了实际类型声明,而dynamic被编译成Object类型,编译器编译时不会对dynamic进行类型检查
  • dynamic类型再编译后是一个object类型,和object的区别?
  • 编译时类型检查
  • 类型转换

你可能感兴趣的:(Dart-变量与常量)