1、变量和常量
1.1、变量
Dart语言中所有变量都是一个对象,每个对象都是一个类的实例。数字类型(numbers)、函数和 null 也是对象。所有对象都继承自 Object 类。
Dart中定义变量的方式有两种:
1、明确的指定变量的数据类型
String name;
int age;
double height;
2、使用 var / dynamic / Object 声明变量
var message1;
message1 = "str";
message1 = 19; //这行代码会报错
dynamic message2;
message2 = 1.78;
message2 = "message2";//这行代码不会报错
print("${message2.length}");
Object message3;
message3 = 10;
message3 = "message3";
print("${message3.lenngth}"); //这句代码会报错
var与dynamic的区别
- 1.var声明的变量一经赋值后,数据类型就已经确定,不可以接收其他的数据类型,所以message1 = 19这行代码报错
- 2.dynamic声明的变量在第一次赋值后,可以继续接收其他的数据类型,所以message2 = "message2"这行代码不会报错
dynamic与Object的区别
- 1.dynamic与Object声明的变量都可以再次接收其他类型的数据类型
- 2.dynamic声明的变量可以使用变量运行时的属性跟方法,String类型的变量有length属性,所以可以使用,Object声明的变量只能使用Object本身的属性以及方法,Object类型本身不具备lehgth属性,所以print("${message3.lenngth}");这行代码会报错
1.2、final与const声明常量
const str = "sj";
final msg = "msg";
常量总结: 1.const与final 都用于声明常量,而且已经赋值都不可以被修改 2.const声明常量时,必须赋值明确的值,final声明的常量可以在运行时再赋值
late
- 1、显式声明一个非空的变量,但不初始化。
如果不加late关键字,类实例化时此值是不确定的,无法通过静态检查,加上late关键字可以通过静态检查,但由此会带来运行时风险。 - 2、延迟初始化变量。
如果这个变量没有被使用的话就不会被初始化,初始化语句不会执行。