Dart是一个强大的脚本语言,可以不预先定义变量类型,自动会类型推断。
Dart中定义变量可以通过var关键字,也可以通过类型来申明变量。
变量命名规则:
1、变量名字必须有数字、字母、下划线或美元符号$组成。
2、变量名字不能以数字开头。
3、变量不能为保留字或者是关键字。
4、变量名称区分大小写,Age和age是不同的变量。
5、建议使用驼峰命名法。
数值型:
Dart中只有int 和 double 两种数值型数据,他们的父类是num。
int a = 100;
double b = 3.45;
等价于:
var a = 100;
var b = 3.45;
字符串类型:
//可以通过空格和 + 链接字符串。
final String name = "ghjkl";
const NAME = "HHHHHHH";
String n0 = "Hello" " World";
String n1 = "$name $NAME";
String n2 = name + NAME;
常量:
常量使用final或者const修饰。
区别:
const修饰的值一开始就得赋值。
final修饰的变量可以开始不赋值,但是智能赋值一次。
final String name;
name = "hhhhhhh";
const NAME = "HHHHHHH"; //可以省略 String的声明
布尔类型:
bool flag = false;
bool flg = true;
数组/集合:
var list = [1, 2, 3, 4, 5, 6, 7];
print(list);
print(list.length);
print(list[0]);
var lis = new List();
lis.add("张三");
print(lis);
//指定类型
var ls = new List<String>();
字典Map:
var persons = {"name": "张三", "age": 20};
print(persons);
print(persons["name"]);
var pers = new Map();
pers["name"] = "里斯";
pers["age"] = 90;
print(pers);
类型判断:
//类型判断关键字 is
var i = 30;
if (i is String) {
} else if (i is int) {
} else if (i is double) {
}
算术运算符:
int i = 19;
int j = 6;
print(i + j); //加 *** 25
print(i - j); //减 *** 13
print(i * j); //乘 *** 114
print(i / j); //除 *** 3.1666666666666665
print(i % j); //取余 *** 1
print(i ~/ j); //取整 *** 3
关系运算符:
int i = 8;
int j = 6;
print(i == j); //是否相等 (可用于 String 比较)
print(i != j); //是否不相等
print(i > j); //是否大于
print(i < j); //是否小于
print(i >= j); //是否大于等于
print(i <= j); //是否小于等于
逻辑运算符:
if (!flag) {//取反
}
if (age == 90 && name == "搜狗") {//并且:全部为true,则为true;否则为false
}
if (age == 90 || name == "搜狗") {//或:只要有一个为true则为true;全部为false才是false
}
赋值运算符:
1、基本赋值运算符
= :赋值
??= :如果为空,则把值赋给它
int a = 0;
a ??= 10;
print(a);// 0
int b;
b ??= 9;
print(b);// 9
2、符合赋值运算符:
+=:相加 之后在赋值
-=:相减 之后在赋值
*=:相乘 之后在赋值
/=:相除 之后在赋值
%=:取余 之后在赋值
~/=:取整 之后在赋值
int i =5;
int j =7;
i += j;
i -= j;
i *= j;
条件表达式:
1、if...else 语句
int i = 8;
if (i == 9) {
} else if (i == 10) {
} else {
}
2、switch语句
int i = 9;
switch (i) {
case 1:
break;
case 2:
break;
default:
break;
}
3、三目运算符
int i = 0;
String j = (i == 0) ? "hello" : "world";
print(j);//hello
4、?? 运算符
int i = 0;
int j = i ?? 10;
print(j); //0
int a;
int b = a ?? 10;//a是否为空,如果为空,则把10赋值给b,否则就把a赋值给b
print(b); //10
类型转换:
1、String转number
String str = "1234";
var num = int.parse(str);
print(num is int); //true
print(num); //1234
double d = double.parse("3.45");
print(d);//3.45
2、number转String
int a = 90;
var b = a.toString();
print(b is String); //true
print(b); //90
++ 和 --运算:
++在前:先运算,再赋值;
++在后:先赋值,后运算;
// ++在后:先赋值后运算
int i = 1;
int j = i++;
print(i); //2
print(j); //1
// ++在前,先运算后赋值
int a = 1;
int b = ++a;
print(a); //2
print(b); //2
循环语句:
for(){}
// for基本语法
for (int i = 1; i<=100; i++) {
print(i);
}
//第一步,声明变量int i = 1;
//第二步,判断i <=100
//第三步,print(i);
//第四步,i++
//第五步 从第二步再来,直到判断为false
while{
}
do{
}while();
while(表达式/循环条件){
}
do{
语句/循环体
}while(表达式/循环条件);
注意: 1、最后的分号不要忘记
2、循环条件中使用的变量需要经过初始化
3、循环体中,应有结束循环的条件,否则会造成死循环。
var j=10;
do{
j--;
print('执行代码');
}while(j<2);
var i=0;
while(i<10){
i++;
print('执行代码');
}
break语句功能:
0、跳出当前循环。
1、在switch语句中使流程跳出switch结构。
2、在循环语句中使流程跳出当前循环,遇到break 循环终止,后面代码也不会执行
强调:
1、如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句。
2、在多层循环中,一个break语句只能向外跳出一层
break可以用在switch case中 也可以用在 for 循环和 while循环中
continue语句的功能:
【注】只能在循环语句中使用,使本次循环结束,即跳过循环体重下面尚未执行的语句,接着进行下次的是否执行循环的判断。
continue可以用在for循环以及 while循环中,但是不建议用在while循环中,不小心容易死循环