一、入口函数
1、main()
- 每个
.dart
文件中所有内容都要写在 main() 方法中。 - Dart 语法规定,每一行代码结尾必须加上英文的分号表示结束。
2、创建方法
-
main() 方法的创建方法有两种,分别是有返回值和没有返回值
-
有返回值
main() { print('Hello Dart'); }
-
没有返回值
void main() { print('Hello Dart'); }
3、注释
- Dart 中的注释与 JavaScript 中相同
- 快捷键:ctrl + /
二、定义变量
1、关键字
- Dart 是一个强大的脚本类语言,可以不预先定义变量类型,自动会进行类型判断(类似于 JavaScript)
- 声明变量关键字:var
- 声明含类型变量:int(数字类型) String(字符类型)
2、var 定义变量
-
代码
main() { var num1 = 123456; var str1 = 'Hello Dart'; print('数字:$num1'); print('字符:$str1'); }
-
运行结果
3、定义含类型变量
-
代码
main() { String str = 'Hello Dart'; int num1 = 123456; print("数字:$num1"); print("字符:$str"); }
-
运行结果
4、定义特殊字符串变量
main()
{
var str = '''
abc
def
123
456
''';
print(str);
}
5、变量命名规则
-
以数字、字母、下划线、$组成
-
不能以数字开头
-
不能使用关键字
-
区分大小写(age和Age不是同一变量)
-
见名思意
三、定义常量
1、const
- const 声明的常量在声明时必须赋值。
2、final
- final 声明的常量在声明时可以不赋值,后期代码中可以赋值,但只能赋值一次。
- final 声明的常量在赋值时可以赋值某个变量的值。
main()
{
// const time = new DateTime.now(); // 报错
final time = new DateTime.now();
print(time);
}
四、数据类型
1、字符串类型
-
可通过 var 或 String 定义字符串类型变量
main() { var str1 = 'Hello'; String str2 = 'Dart'; print(str1); print(str2); }
-
可通过
+
或$
拼接字符串main() { var str1 = 'Hello'; String str2 = 'Dart'; print("$str1 $str2"); print(str1 + " " + str2); }
2、数值类型
-
可通过 var int double 关键字定义数字类型的变量
-
使用 int 声明的变量是整形数据。
-
使用 double 声明的变量是浮点型数据。
main() { int a = 10; double b = 12.5; print("$a $b"); }
3、布尔型
-
使用 var bool 定义布尔型数据。
-
布尔值包括: true、false
-
条件判断时,区分数据类型。
main() { var a = 123; var b = '123'; if(a == b) { print("a = b"); } else { print("a != b"); } }
4、数组类型(集合类型)
-
可使用 var List 声明数组变量。
-
在声明时,可指定数组类型。
main() { // 普通定义 List arr = ['张三',20,true]; print(arr); print(arr.length); print(arr[0]); print('--------------------'); // 指定类型 var arrStr = <String>['张三','李四']; print(arrStr); }
-
给数组添加数据,add()方法相当于 JavaScript 中的 push() 方法
main() { var arr = []; print(arr); print(arr.length); print('-------'); arr.add(1); arr.add(2); arr.add(3); print(arr); }
-
创建指定长度的数组。固定长度的数组只可以修改元素,不可以新增元素
main() { var arr = List.filled(10, true); print(arr); arr[3] = false; print(arr); }
5、Maps 类型
-
第一种定义方式
main() { var obj = { 'name': '张三', 'age': 20, 'gender': 0 }; print(obj); print(obj['name']); }
-
第二种定义方式
main() { var obj = new Map(); obj['name'] = '张三'; obj['age'] = 20; obj['gender'] = 0; print(obj); }
6、类型判断
-
关键字:
is
main() { var num = 10; var str = '张三'; var arr = ['李四',20,'程序员']; var obj = { 'name': '王五', 'age': 20, 'gender': 1 }; print(num is int); print(str is String); print(arr is List); print(obj is Map); }
五、运算符
1、算数运算符
- 运算符
运算符 | 注释 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
~/ | 取证 |
-
代码
main() { var num1 = 21; var num2 = 12; print(num1 + num2); print(num1 - num2); print(num1 * num2); print(num1 / num2); print(num1 % num2); print(num1 ~/ num2); }
2、关系运算符
-
运算符
运算符 注释 == 等于 ! = 不等于 > 大于 < 小于 > = 大于等于 < = 小于等于 -
代码
main() { var num1 = 21; var num2 = 12; print(num1 == num2); print(num1 != num2); print(num1 > num2); print(num1 < num2); print(num1 >= num2); print(num1 <= num2); }
3、逻辑运算符
-
运算符
运算符 注释 ! 非 && 与 || 或 -
与 JavaScript 语法一样
4、赋值运算符
-
运算符
运算符 注释 = 普通赋值 ??= 条件赋值
5、复合赋值运算符
-
运算符
运算符 注释 += 加等于 -= 减等于 *= 乘等于 /= 除等于 %= 取余等于 ~/= 取整等于 -
与 JavaScript 语法一样
6、其他
-
运算符
运算符 注释 ++ 自增 – 自减 -
与 JavaScript 语法一样
main() { var a = 10,b = 10,c = 10,d = 10; print(++a); print(--b); print(c++); print(d--); print("c = $c,d = $d"); }
六、条件表达式
1、if else
- 与 JavaScript 语法一样
2、switch() case
- 与 JavaScript 语法一样
3、三目运算符
-
与 JavaScript 语法一样
main() { var a = 10; var b = 20; var c = a < 20 ? b > 10 ? 'true' : 'false' : 'false'; print(c); }
4、??
七、类型转换
1、字符转数值
-
方法:pase()
-
代码:
main() { var str0 = '123'; var num0 = int.parse(str0); print(num0 is int); var str1 = '123.1'; var num1 = double.parse(str1); print(num1 is double); }
2、数值转字符
-
方法:toString()
-
代码
main() { var num0 = 123.1; var str = num0.toString(); print(num0 is double); print(str is String); }
3、转布尔型
-
判断字符串是否为空
main() { var str0 = ''; var str1 = 'abc'; str0.isEmpty ? print('str0: 空字符串') : print('str0: 非空字符串'); str1.isEmpty ? print('str1: 空字符串') : print('str1: 非空字符串'); }
八、循环语句
1、for 循环
-
同 JavaScript
-
与 JavaScript 不同的是,在 dart 中不支持 for in 和 for of
-
例:利用 for 嵌套遍历二维数组
main() { List subject = [ { 'title': '语文', 'list': [ '唐诗','宋词','文言文' ] }, { 'title': '数学', 'list': [ '算数','几何','函数' ] } ]; for(var i = 0; i < subject.length; i++) { var title = subject[i]['title']; var list = subject[i]['list']; print(title); for(var j = 0; j < list.length; j++) { print("--${list[j]}"); } } }
2、while 循环
- 同 JavaScript
- 先判断条件,在执行循环体。
3、do while 循环
- 同 JavaScript
- 先执行循环体,在判断条件。(循环体至少执行一次—)
4、break 和 continue
- 同 JavaScript
- break: 跳出最近一层循环
- continue:跳出本次循环
main()
{
for(var i = 0; i < 10; i++)
{
if(i == 2) continue;
print(i);
}
for(var j = 0; j < 3; j++)
{
print("外层第${j+1}次循环");
for(var k = 0; k < 5; k++)
{
if(j == 1 && k == 3) break;
print("---内层第${k+1}次循环");
}
}
}