官网
核心概念
- 一切能赋给变量的都是对象,每个对象都是一个类的实例。数字、方法、null 都是对象,所有的对象都是继承自 Objet 类。
- 强类型语言,但是具备类型推断的能力。如果想明确说明变量类型不确定,则可以定义为 dynamic 类型。
- 支持泛型
- 支持顶级方法,以及类、实例方法,也可以在方法中创建方法
- 支持顶级变量,以及类、实例变量
- 没有 public、protected、private关键字,以下划线(_)开头的标识符表示私有。
- 标识符以字母或者下划线开头
- 支持表达式(有 runtime values,如 condition ? value1 : value2)和语句(没有,例如 if-else statement)。语句包含一个或多个表达式,表达式不能包含语句。
- dart工具可以报告 warnings 和 errors(compile-time error 或者 run-time error)。
关键字
参考官网
变量
- 类型推断方式
var name = 'bob';
- 动态类型变量
dynamic name = 'bob';
- 静态类型变量
String name = 'bob';
默认值
未初始化的变量默认值未 null ,即使时数字类型的变量未初始化,默认值也是 null ,因为所有能赋值给变量的都是对象。
int lineCount;
assert(lineCount == null);//在生产模式下会被自动忽略,在开发模式下如果不满足条件会抛出异常
Final 和 const
和 java 类似,定义常量,final 修饰的变量只可以赋值一次,const 修饰的变量是编译时常量,const含有final的作用。
实例变量可以用final修饰,但是不能用const修饰,并且必须在构造器方法体执行之前使用构造参数进行初始化
类级别的常量可以用 static const 修饰。
const 不仅可以用来声明常量,还可以用来创建常量,声明创建常量的构造器。任何变量都可以被常量值赋值。