阅读对象
完全的新手
总览
环境
Mac OS
- 安装环境
$ brew tap dart-lang/dart
$ brew install dart
- Hello world
通过文件编辑器创建 hello.dart 文件,内容如下:
//hello.dart
main() {
print("Hello, dart");
}
Dart 在内部有一个 main() 函数作为程序的入口,每一个 dart 的程序都必须有一个 main() 函数作为程序的入口。
- 运行
$ dart hello.dart
Hello, dart
语法
标识符
标识符是指在编程中用来表示变量名字,函数名字,类名字的一些符号,比如上面看到的 print、main、以及下面看到的 TestClass、show等。 标识符包含了字符和数字,它的规则有:
- 不能包含特殊字符,除了 _ 和 $;
- 不能是关键字,关键字在下面会列出来;
- 必须唯一
- 大小写敏感
- 不能包含空格
- 不能以数字开头
| 合法标识符 | 非法标识符 |
|---|---|
| myName | my Name |
| my_name | my-Name |
| $myName | ^myName |
| my2Name | 2myName |
Dart 中的关键字
- 关键字
- 空格和换行 Dart 会忽略程序中出现的空格和换行符。所以,可以任意的使用这些符号,以此来增加代码的阅读性。
- 大小写敏感 在 Dart 的世界里, Dog 和 dog 是不同的
- 分号结尾 每条语句必须使用分好结尾,一行可以有多条语句,但是也必须使用 ";" 结尾
注释
注释可以提高代码的可阅读性.注释包括了作者,函数功能以及结构的说明信息。注释会被编译器忽略。 Dart 支持两种注释:
- 单行 "//"
- 多行 "/* */"
例子:
// 单行注释
/*
多行注释
*/
面向对象
Dart 是一门面向对象的语言。在面向对象的世界里,将程序中所有的集合称之为对象,对象与对象通过方法进行沟通。
- 对象 代表现实世界中的实体,每个对象应该有三个属性:
- 状态,一个对象属性的集合;
- 行为, 描述了对象的表象;
- 标识,对象的唯一标识
- 类,类的集合,或者类的蓝图
- 方法,实现对象之间的沟通
代码实例:
class TestClass {
void show() {
print("Hello world");
}
}
void main() {
TestClass t = new TestClass();
t.show();
}
上面的例子定义了一个类TestClass,这个类有一个方法 show(). 这个方法打印输出了”Hello world“ 到终端上。
数据类型
数据类型是一门编程语言的基础,Dart 支持:
- Numbers
- Strings
- Booleans
- Lists
- Maps
Numbers
数值类型通常用于处理数字。Dart 有两种数值类型:
- Integer 代表非小数数据,比如 9,10,101,通过关键字 int 表示
- Double 表示小数数据,在 Dart 中一个Double的数据可以表示 64-bit 的小数,通过关键字 double 表示
void main() {
// integer
int a = 10;
int b = 11;
// Double
double f = 12.5;
}
String
String 类型数据代表一串字符。比如在计算机中存储名字、地址等数据的时候,String 类型就可以被用到了。 Dart 中的字符串为 UTF-16 的编码格式。Runes 用来表示 UTF-32 的编码格式。 String 是字符串的关键字,通常一个字符串被包含在单引号或者双引号之间。
void main() {
// String
String name = "Tom";
print(name);
// Runes
Runes address = new Runes('\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');
print(new String.fromCharCodes(address));
}
Boolean
关键字为 bool ,代表 true 或者 false。
List 和 Map
List 和 Map 都是集合类型的数据。List 如同其他编程语言中的数组,而Map是键值对。这两种数据类型都内置月 Dart 的核心库中,通过 List 和 Map 的类来表示。
Dynamic Type
Dart 是一门可选类型语言,如果一个变量定义的时候没有明确数据类型,那么这个变量的类型就是动态的。
变量
变量就是一个名字,是谁的名字呢?变量代表了一个值在内存中的名字。我们将一个值存入内存,通过变量就可以找到这个值。变量命名规则:
- 不能包含关键字
- 可以包含数字和字符
- 不能以数字开头
- 不能包含特殊字符,除了 "_" 和 "$"
变量声明语法
变量,先声明后使用。 Dart 使用关键字 var 来声明。语法格式如下:
void main() {
var name = "Jack"; // 声明变量 name 存储值为 "Jack"
print(name); // 使用变量
}
Dart 中的变量存储的是一个引用,而不是相应的值。比如, 当程序运行的时候,“Jack” 是被存储在内存的某块区域,name 存储的是这块区域的地址,而并非这个值 "Jack"。
Dart 存在类型检查,类型检查是根据变量名字前面的数据类型进行。比如下面的程序:
void main() {
String name = "Rose";
int num = 20;
}
针对于没有初始化的变量,dart 默认数赋值为 null
void main() {
var novalue;
print(novalue)
}
上面这段程序输出的结果为: null。
dynamic 关键字: 变量如果没有显示的声明类型,那么它的类型就是动态的。在 Dart 中可通过 dynmaic 来声明一个动态类型的变量。
void main() {
dynamic v = "Tom";
print(v);
}
Final 和 Const
Dart 通过关键字 Final 和 Const 来声明常量。 Const 声明的常量在编译期间值就已经确定,后面不允许修改。
void main() {
final num1 = 12;
final int num2 = 13;
final String str1 = "nmmm";
const num4 = 12;
const int num5 = 13;
//num1 = 10;// 报错
}
操作符
表达式最终都会产生一个值,每个表达式由下面两部分组成:
- Operands 操作数 代表数据
- Opearator 操作符 代表对数据的操作
考虑 “1 + 2 ” 这个表达式:1 和 2 都是操作数,符号 “+” 是操作符 在 Dart 中操作符有如下几种:
- 算数操作符(Arithmetic)
- 相等和关系操作符(Equality 和 Relational)
- 类型测试操作符(Type test)
- 位操作符(Bitwise)
- 赋值操作符(Assignment)
- 逻辑操作符(Logical)
算数操作符
| 1 | + 加号 |
| 2 | - 减号 |
| 3 | -expr 符号 |
| 4 | * 乘号 |
| 5 | / 除号,如果不能整除会带有浮点数 |
| 6 | ~/ 整除 |
| 7 | % 取余 |
| 8 | ++ 自加 |
| 9 | -- 自减 |
关系操作符
关系运算符判断两个数或者表达式之间的关系。关系运算符的结果是 true or false。 假设 A = 10 , B = 20
| Operator | Description | Example |
|---|---|---|
| > | 大于 | (A > B)结果为 false |
| < | 小于 | (A < B)结果为 true |
| >= | 大于等于 | (A >= B)结果为 false |
| <= | 小于等于 | (A <= B)结果为 true |
| == | 等于 | (A == B)结果为 false |
| != | 不等于 | (A != B)结果为 true |
| Operator | Meaning |
|---|---|
| is | 如果当前对象为相应的类型返回 true |
| is! | 如果当前对象为相应类型返回 false |
位操作符
| Operator | Description | |
|---|---|---|
| 按位与 | a & b | |
| 按位或 | a | b | |
| 按位异或 | a ^ b | |
| 按位取非 | ~ a | |
| 左移位 | a << b | |
| 右移位 | a >> b |
赋值操作符
下面列出了Dart中所有的赋值运算符:
| NO. | Operator & Description | |
|---|---|---|
| 1 | = 基本赋值运算符 | |
| 2 | ??= 只有当值不为空的时候才会赋值 | |
| 3 | += | |
| 4 | -= | |
| 5 | *= | |
| 6 | /= |
逻辑操作符
逻辑运算符用来组合几个表达之,然后返回 true 或者 false A = 10 B = 20
| Operator | Description | Example |
|---|---|---|
| && | 只有当两个表达式都为 true 的时候才返回 true | (A > 10 && B > 10) is False. |
| || | 两个表达式中如果有一个为真 | (A < B)结果为 true |
| ! | 将表达式取反 | (A >= B)结果为 false |