Flutter之旅
上QQ阅读APP看书,第一时间看更新

2.1.2 变量与常量

变量定义

和大多数现代编程语言一样,Dart语言支持类型推断,但不同于JavaScript或Python。Dart是强类型的编程语言。定义变量时可以使用var关键字来替换变量类型,示例如下:


---->[day02/02/var_const_final.dart]----
main(){
  var age = 18;
  var isMan = true;
  var name = '张风捷特烈';
  var languages = ['Java', 'Dart', 'Python', 'C++', 'Kotlin'];
  var languages2 = {'Java', 'Dart', 'Python', 'C++', 'Kotlin',"Java"};
  var map = {1: 'one', 2: 'two', 3: 'three'};
  var className = #Person;
}

提示:如果只是用var声明变量,未赋值,那么该变量的数据类型是可以修改的(如下代码左侧所示)。如果声明的同时进行赋值,那么该对象的类型就是固定的,不可修改(如下代码右侧所示)。原因如下图:如果只声明,变量的类型是dynamic,即可变的;当声明并赋值时,它的类型就能被固定。

常量定义

常量就是一旦确定就不能再改变的值,在Dart语言中,用const关键字或final关键字定义常量。当对final或者const修饰的量再进行赋值时就会报错,如下所示:


final PI = 3.14159265;//final定义常量
PI=4;// ERROR: 'PI', a final variable, can only be set once.
const Pi  = 3.14159265;//const定义常量
Pi=4;// ERROR: Constant variables can't be assigned a value.

两者的区别在于const是编译期的常量,final是运行时常量。也就是在运行期间才能获取到的常量必须用final定义,如下所示:


final f = DateTime.now(); // OK
const c = DateTime.now(); // ERROR 
//Const variables must be initialized with a constant value.