概念

  1. 任何保存在变量中的都是一个对象,并且所有对象都是一个类的实例,无论数字、函数、null都是对象,所有的对象继承于Object类

main() {
int num;
print(‘数值:$num’);
}
执行结果:数值:null
从执行结果中可以看出 未初始化的变量的初始值是null 数字类型也是如此 因为数字在Dart中也是对象

  1. Dart是强类型的,但是Dart可以推断类型的,所以类型注释是可选的,下面例子说明,num被推断成int类型,如果明确说明不需要任何类型,需要使用特殊类型dynamic

main() {
var num =18;
age(num);
dynamic age1 = 20;
}

age(int age) {
print(‘我的年龄:$age’);
}

  1. Dart支持泛型,如List(整数列表)或List(任何类型的对象列表)
  2. 支持顶级函数(main(){}),同样函数绑定在类或对象上(静态函数 实例函数),以及支持函数内创建函数(嵌套 局部函数)
  3. 支持顶级变量(var name = “小黄”; main() { print(‘$name’); })同样变量绑定在类或对象上(静态变量 实例对变量)
  4. 与java不同,Dart没有关键字private、public、protected,如果标识符以下划线(_)开头,则它相对于库是私有的
  5. 标识符以字母或下划线(_)开头,后跟任意字母和数字组合
  6. Dart语法中包含表达式和语句
  7. Dart提示两种类型的工具,警告和错误,警告的话只是标明代码可能无法正常工作,但不会阻止程序的执行,错误可能是编译时错误或者运行时错误,编译时错误会阻止代码的执行,运行时错误会导致代码在执行过程中引发异常

    关键字

    | abstract | dynamic | implements | show | | —- | —- | —- | —- | | as | else | import | static | | assert | enum | in | super | | async | export | interface | switch | | await | extends | is | sync | | break | external | library | this | | case | factory | mixin | throw | | catch | false | new | true | | class | final | null | try | | const | finally | on | typedef | | continue | for | operator | var | | covariant | Function | part | void | | default | get | rethrow | while | | deferred | hide | return | with | | do | if | set | yield |

避免使用上面无上角标的关键字(保留字)单词作为标识符

  1. 带有上标 1 的单词 为上下文关键字
  2. 带有上标 2 的单词 为内置标识符 目的是为了简化将js代码移植到Dart中的工作,这些关键字在大多数地方都是有效的标识符,不能用作类和类型名称,也不能用作import前缀
  3. 带有上标 3 的单词 是Dart1.0发布后添加的异步支持相关的更新,作为限制类保留字,不能在标记为async 和 sync*的任何的函数体中使用await和yield 作为标识符

    变量

    使用var关键字定义变量 不是必须要指定变量类型的
    var name = ‘小黄’;
    也可以显式的指定变量的类型
    String name = ‘小李子’;
    如果对象不限于一个单一的类型,可以指定它为Object和dynamic类型

    默认值

    为初始化的变量的初始值是null,无论什么类型的变量,在没有赋初始值的情况下,默认值为null对象

常量

final 和 const 修饰
如果变量的值是一个不可变的值,那么就可以使用final 或 const 修饰类型替代var,final只能赋值一次,const是编译时常量,也就是说const一经声明就不能再次赋值

final变量和类变量在首次访问时才执行初始化
///final const修饰的常量 其类型也可以省略
final name = ‘小李子’;
///const name = ‘小李子’;
name = ‘小黄’; /// 运行时异常 The final variable ‘name’ can only be set once.

const不仅可以修饰常量,还可以创建常量值,以及声明创建常量值的构造函数

var fo = const[22,33,44,55];