Dart 中一切实例都是对象, 它们集成自 Object 且默认均为 null

数据类型

Dart 中主要的数据类型有:

  • Numbers => 数值
  • Strings => 字符串
  • Booleans => 逻辑值
  • List => 列表
  • Maps => 映射

声明变量

我们可以使用 var 关键字或者类型名来进行变量声明:

var str1 = "Some string";
// or:
String str2 = "Another string";

注释

你可以使用 // 进行注释。

var a = "string";
// 这是一句注释

打印

你可以使用 print 语句进行打印:

print("string"); // 输出字面值 "string"
print("br: \n"); // 输出字面值 "br: " 以及一个新行
print(r"br: \n"); // 输出字面值 "br: \n"

assert

在检查模式中, 与很多语言类似, 你也可以使用 assert 语句断言。

var name = "Elias Abel";
assert(name == "Bob"); // 这里判断会失败, 检查模式下程序将被终止。

字符串

字符串可以使用成对的单引号 (') 和双引号 (") 包含:

var str1 = "I'm Bob.";
var str2 = 'I\'m Tom.';

var str3 = 'I am a "Monster".';

你也可以使用多行字符串:

var str4 = '''Dart lang:
Hello, world! (1)
''';

var str5 = """Dart lang:
Hello, world! (2)
""";

相邻的字符串会被自动连接:

var str6 = 'Elias'' ''Abel';
// 这里有三个字符串分别是 'Elias' 和 ' ' 以及 'Abel'

常量: const 与 final

其实基本的数据类型有很多丰富的特性, 这里暂时不做过多赘述。

现在我们来了解一下 constfinal, 与其他主流语言中的用法基本一致。

在声明变量时, 前面提到了可以使用类型名和 var

事实上, 我们还可以额使用 constfinal, 声明常量, 它们的值是不可变的, 因此要求在声明时初始化。

var i = 10
const i = 10
final i = 10

int i = 10
const int i = 10
final int i = 10

其中, constfinal 也有细微差别, 简单来说:

  • const 定义的是编译时常量,只能用编译时常量来初始化
  • final 定义的常量可以用变量来初始化

例如:

final time1 = new DateTime.now(); // 正确
const time2 = new DateTime.now(); // 错误 new DateTime.now() 不是 const 常量

const list1 = const [1,2,3]; // 正确
const list2 = [1,2,3]; // 错误

final list3 = [1,2,3]; // 正确
final list4 = const [1,2,3]; // 正确
final list5 = const [new DateTime.now(),2,3]; // 错误, const 右边必须是常量