1.定义
声明 | 作用 |
---|---|
var | 自动推导类型 |
dynamic | 动态类型 (变量类型可以是任何数据类型) |
类 | 明确的类型 |
注:和java不同,dart中的int、long、double、bool等并不是关键字,只是一个类
var name = 'Bob'; //自动推导出类型为String(这里的' 和 "并没有区别)
dynamic a = "a";
a = 1; //可以修改
int i = 12; //类型为int类
1.2 修饰
修饰 | 说明 |
---|---|
final | 运行常量 |
const | 编译常量, 编译时确定并且不再变的变量 |
static | 仅可用在类中,静态变量 |
- final/const 必须初始化的时候赋值,且不可改变
- 类中属性,const常量必须用static修饰
final name = 'Bob'; // 可以不需要指明类型,因为可以推导出来,后面必须初始化
final String nickname = 'Bobby';
final ls = [1,2,3,4,5,6]; // 不传递不可变性,不影响子元素的可变性
ls[1] = 10;
const ls1 = [1,2,3,4,5,6]; // 传递不可变行,影响子元素的可变性
// ls1[1] = 10; // 报错
// 使用const 定义的变量,如果在内存中已经存在, 则会复用
const ls2 = [1,2,3,4,5,6];
print(identical(ls1,ls2)); // true ls1 和 ls2 是相同对象
创建常量值 const
通过常量值的构造函数,创建常量值
var foo = const []; //这里List的构造函数也是const修饰的
final bar = const []; //bar不可改变
const baz = []; // baz不可改变,等价于const baz = const []
class A{
static const int a = 1;
const A(); //修饰构造函数
}
void main(){
A a = const A();
}
网友评论