一、入口方法
三种注释方式
mian(){// 有返回值/// 有返回值/* 有返回值 */}void mian(){// 无返回值}
二、数据类型
- 常量
变量
Number & String
NOTICE:
- is 关键字 判断类型
- isEmpty 方法 判断字符串是否为空
- 报错界限:
- int.parse(…)只支持整数,结果也是整数; double.parse(…)支持浮点数和整数,结果都是浮点数.
- double.parse和int.parse不支持解析空串.
String sNum = '123';var myNum1 = int.parse(sNum);print(myNum1 is int);var myNum2 = double.parse(sNum);print(myNum2 is int);var str = myNum1.toString();print(str is String);print(str.isEmpty);
三、变量
2.1 变量声明(常量)
强类型语言,可不预先定义变量类型,自动根据变量进行类型推导 类型推导:推断类型之后不能赋值其他类型的数据结构!!!
var str1 = '类型推导方式'; // var 关键字String str2 = '类型校验方式';// 两种方式不能混用// var a int = 5; // 报错
/* const & final 两大区别 */// 1. 赋值时机const a = 'const 在声明时必须赋值';const String a = '加类型'; // ???final b = 'final 可以在声明的时候不赋值,但此后仅能赋值一次';final String b = '加类型'; // ???// 2. 赋值拥有返回值的方法 (方法 === 运行时)/*final不仅有const编译时常量的特性,最重要还是运行时常量;而且final时惰性初始化的,即在运行时第一次使用到它的时候才初始化。(程序走到他这儿才开始初始化)*/const c = new DateTime.now(); // 报错final d = new DateTime.now(); // 2021.03.28 17:48:55.966122 (当前时间为)
2.2 命名规则
- 由字母、下划线、美元、和数字组成;
- 开头不能是数字;
不能是保留字和关键字
var const final void main is String … 、if else …
区分大小写;
- 见名思意:变量使用名词、方法使用动词;
四、运算符
3.1 算术运算符 & 赋值运算符
int a = 11; int b = 5;
| 加 | + | (a + b) -> 16 | 分割 | 加等 | += | a+=2 -> a=a+2 = 13 | 复合 赋值 运算 符 |
|---|---|---|---|---|---|---|---|
| 减 | - | (a - b) -> 6 | 线 | 减等 | -= | a-=2 -> a=a-2 = 9 | |
| 乘 | * | (a * b) -> 55 | 线 | 乘等 | *= | a=2 -> a=a2 = 22 | |
| 除 | / | (a / b) -> 2.2 | 线 | 除等 | /= | a/=2 -> a=a/2 = 5.5 | |
| 取余 | % | (a % b) -> 1 | 线 | 余等 | %= | a%=2 -> a=a%2 = 1 | |
| 取整 | ~/ | (a ~/ b) -> 2 | 线 | 取整再等 | ~/= | a~/=2 -> a=a~/2 = 1 | |
| 线 | 普通赋值 | = | int c = a+b; | 基础赋值 运算符 |
|||
| 线 | 防空赋值 | ??= | int c; c??=10; -> c=10 |
NOTICE:
- 取整 是dart区别于其他语言的特点之一
- 防空赋值
??=: 如果等式左边为空,则把右边赋值给左边;否则不进行任何操作。0/0=NaN当被除数为0时返回NaN.- isNaN 方法 判断是否为NaN.
3.2 关系运算符(返回布尔值)
int a = 11; int b = 5;
| 等于 | == | (a == b) -> false |
|---|---|---|
| 不等于 | != | (a != b) -> true |
| 大于 | > | (a > b) -> true |
| 小于 | < | (a < b) -> false |
| 大于等于 | >= | (a >= b) -> true |
| 小于等于 | <= | (a <= b) -> false |
3.3 逻辑运算符
int flag = true; int ret = false;
| 取反 | ! | !a -> false |
|---|---|---|
| 并且(全为true则值为true) | && | (a && b) -> false |
| 或者(全为false则值为false) | || | (a || b) -> true |
3.4 条件表达式
// if else// switch case// 三目// ?? 运算符: 如果左侧是空值,则优先右边的值;反之优先左边的值。(js内也支持的)var a;var b = a ?? 10; // 10 (当a是空值)var c = 11;var d = c ?? 10; // 11 (当a不为空)
3.5 ++ & —
int a = 11; NOTICE: 自增自减与赋值运算结合分情况
// 不赋值时没有区别,都是自增自减1a++; a--; ++a; --a;// 赋值时:var b = a++; // 写在后面先赋值后运算var b = a--; // ret: b=11;a=10;var b = ++a; // 写在前面先运算后赋值var b = --a; // ret: b=10;a=10;
五、控制流语句
4.1 for循环
for(var i=0; i<5; i++) {}for(var i=5; i>0; i--) {}List aList = [1, 2, 3, 4, 5];for(var i=0; i<aList.length; i++) {}for(var i=aList.length; i>0; i--) {}List aLists = [[1,2,3],[4,5,6]];for(var i=0; i<aLists.length; i++) {for(var j=0; j<aLists[i].length; j++) {print(aLists[i][j])}}
4.2 while & do…while
NOTICE:
- 循环条件中使用的变量必须经过初始化
- 循环体中,必须有结束循环的条件,否则将造成死循环
- do..while 的while循环条件之后必须带分号;
// while是先判断循环条件,再执行循环体int i = 1;while(i<=10) {print(i, '满足小于等于10的循环条件');i++; // 循环体中结束循环的条件}// do...while 是先执行循环体,再判断循环条件 [即当循环条件不满足,也会先执行循环体一次]do {print(i, '满足小于等于10的循环条件');i++; // 循环体中结束循环的条件} while(i<=10);
4.3 break & continue

