文章目录
  1. 1. 内置的类型
    1. 1.1. numbers 数值
    2. 1.2. string 字符串
    3. 1.3. booleans
  2. 2. lists
    1. 2.1. maps
    2. 2.2. runes(Unicode 字符)
    3. 2.3. symbols
  3. 3. 变量定义
  4. 4. 操作符
    1. 4.1. 条件表达式
    2. 4.2. 级联操作符
    3. 4.3. 空安全操作符

内置的类型

  • numbers
  • strings
  • booleans
  • lists
  • maps
  • runes
  • symbols

numbers 数值

数字类型的父类,有两个子类intdouble

string 字符串

Dart 字符串是 UTF-16 编码的字符序列,可以使用点引号和双引号,而且可以嵌套。
使用\进行转义
使用三个单引号或者双引号可以创建多行字符串对象
使用r前缀可以创建原始字符串(不转义)

1
print(r"换行符\n")

booleans

布尔值可以是falsetrue,类型名为bool

lists

1
2
3
var list = [1,2,3];
var list = new List(1);
var list = const [1,2,3]; // 定义不可变List

maps

1
2
3
4
var map = {'a':1,'b':2};
var map = new Map();
map['a'] = 1;
var c = const {'a':1,'b':2};

runes(Unicode 字符)

1
var clapping = '\u{1f44f}' //使5位16进制

symbols

1
2
3
var a = #A; // 常量
var b = new Symbol("A");
print(a == b); //true

变量定义

1
2
3
4
5
6
7
8
9
Object a = 'String'; // 可以是任意类型
var a = 1; // 赋值 确定类型
var b; // dynamic 没有赋值可以是任意类型
b = 1;
b = 'a';

// 常量
const a = 1; // 编译时常量 效率更高
final b = 1; // 运行时常量

操作符

操作符 说明
as 类型转换
is 判断类型
is! 判断类型与 is 相反
= 赋值
+= \= *= 运算并赋值
??= 为 null 赋值
1
2
3
a ??= value;
// 如果 a==null,a=value
// 否则 a不变

条件表达式

  • condition ? expr1 : expr2
    如果 condition==true 执行返回 expr1,否则执行返回 expr2
  • expr1 ?? expr2
    如果 expr1 不为空返回 expr1 否则返回 expr2

级联操作符

..可以在同一个对象上连续调用多个函数活访问变量

1
2
var sb = new StringBuffer();
sb..write('foo')..write('bar');

空安全操作符

1
2
String sb;
sb?.length // null
文章目录
  1. 1. 内置的类型
    1. 1.1. numbers 数值
    2. 1.2. string 字符串
    3. 1.3. booleans
  2. 2. lists
    1. 2.1. maps
    2. 2.2. runes(Unicode 字符)
    3. 2.3. symbols
  3. 3. 变量定义
  4. 4. 操作符
    1. 4.1. 条件表达式
    2. 4.2. 级联操作符
    3. 4.3. 空安全操作符