
变量仅存储对象引用
这里的变量是 name 存储了一个 String 类型的对象引用。 “Bob” 是这个 String 类型对象的值。
.1)默认值
未初始化的变量默认值是 null。即使变量是数字 类型默认值也是 null,因为在 Dart 中一切都是对象,数字类型 也不例外

提示: 在生产环境代码中 assert() 函数会被忽略,不会被调用。 在开发过程中, assert(condition) 会在非 true 的条件下抛出异常.有关更多信息,参考 Assert.
2)final 和const
final 修饰的变量不能修改
final name4 = 'Bob';
如果需要在编译时就固定变量的值,可以使用 const 类型变量。 如果 Const 变量是类级别的,需要标记为 static const。 在这些地方可以使用在编译时就已经固定不变的值,字面量的数字和字符串, 固定的变量,或者是用于计算的固定数字:
const bar =10000;
Const 关键字不仅可以用于声明常量变量。 还可以用来创建常量值,以及声明创建常量值的构造函数。 任何变量都可以拥有常量值。

声明 const 的初始化表达式中 const 可以被省略。 比如上面的 baz。
非 Final , 非 const 的变量是可以被修改的,即使这些变量 曾经引用过 const 值

3) 内建类型
Dart 语言支持以下内建类型:Number
String
Boolean
List (也被称为 Array)
Map
Set
Rune (用于在字符串中表示 Unicode 字符)
Symbol
这些类型都可以被初始化为字面量。 例如, 'this is a string' 是一个字符串的字面量, true 是一个布尔的字面量
因为在 Dart 所有的变量终究是一个对象(一个类的实例), 所以变量可以使用 构造涵数 进行初始化。 一些内建类型拥有自己的构造函数。 例如, 通过 Map() 来构造一个 map 变量。
Number类型
Number 有两种类型: int,double

字符串可以通过 ${expression} 的方式内嵌表达式。 如果表达式是一个标识符,则 {} 可以省略。 在 Dart 中通过调用就对象的 toString() 方法来得到对象相应的字符串

运算符用来测试两个对象是否相等。 在字符串中,如果两个字符串包含了相同的编码序列,那么这两个字符串相等, 例如 'AB' = 'ab'.
可以使用 + 运算符来把多个字符串连接为一个
//使用连续三个单引号或者三个双引号实现多行字符串对象的创建:

使用 r 前缀,可以创建 “原始 raw” 字符串,例如使换行符不再起作用

一个编译时常量的字面量字符串中,如果存在插值表达式,表达式内容也必须是编译时常量, 那么该字符串依旧是编译时常量。 插入的常量值类型可以是 null,数值,字符串或布尔值

bool
使用 bool 类型表示布尔值,Dart 只有字面量 true and false 是布尔类型, 这两个对象都是编译时常量。

list
几乎每种编程语言中最常见的集合可能是 array 或有序的对象集合。 在 Dart 中的 Array 就是 List 对象, 通常称之为 List

在 List 字面量之前添加 const 关键字,可以定义 List 类型的编译时常量:不能修改值,否则报错!

Set
在 Dart 中 Set 是一个元素唯一且无序的集合。 Dart 为 Set 提供了 Set 字面量和 Set 类型

是 Set 还是 Map ? Map 字面量语法同 Set 字面量语法非常相似。 因为先有的 Map 字母量语法,所以 {} 默认是 Map 类型。 如果忘记在 {} 上注释类型或赋值到一个未声明类型的变量上, 那么 Dart 会创建一个类型为 Map<dynamic, dynamic> 的对象
使用 add() 或 addAll() 为已有的 Set 添加元素

Map:
Map 是用来关联 keys 和 values 的对象。 keys 和 values 可以是任何类型的对象。在一个 Map 对象中一个 key 只能出现一次。 但是 value 可以出现多次。

提示: 这里为什么只有 Map() ,而不是使用 new Map()。 因为在 Dart 2 中,new 关键字是可选的。 有关更多信息,参考 构造函数的使用。
如果 Map 中不包含所要查找的 key,那么 Map 返回 null:

创建 Map 类型常量,要在 Map 字面量前加上关键字 const

网友评论