Dart基础1-变量

1.定义

声明 作用
var 自动推导类型
dynamic 动态类型 (变量类型可以是任何数据类型)
明确的类型

注:和java不同,dart中的int、long、double、bool等并不是关键字,只是一个类

//var:如果没有初始值,可以变成任何类型
//dynamic:动态任意类型,编译阶段不检查类型
//Object:动态任意类型,编译阶段检查检查类型
var name = 'Bob';  //自动推导出类型为String(这里的' 和 "并没有区别)
dynamic a = "a";
Object b = "b";
a = 1;             //可以修改
name = 1;      //错误,类型已经是String,不强转编译报错
int i = 12;       //类型为int类

1.2 修饰

修饰 说明
final 运行常量
const 编译常量, 编译时确定并且不再变的变量
static 仅可用在类中,静态变量
  1. final/const 必须初始化的时候赋值,且不可改变
  2. 类中属性,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();   
}

你可能感兴趣的:(Dart基础1-变量)