语法基础:
- 使用 var 声明一个变量
- 使用 final 声明一个只能赋值一次的变量
- 使用 const 声明一个常量
var bb=123;
final s=123;
const ss=123123;
Dart中的数据类型
1. 数值型-Number 分为2种类型
- 1.1 可以是任意类型:num 因为num是int和double的父类
- 1.2 整型 :int
- 1.3 浮点型: double
2. 数值型操作符
-
-
- / ~/ (取整) %取余
-
3. 字符串-String
- 使用单引号或者双引号创建字符串
- 使用三个引号创建多行字符串
- 使用r创建raw字符串 r"hello \n world" 不会进行转译字符串
3.1 常见操作符: + * == []
String str="hello";
print(str * 2); //hellohello
print(str[1]); //e
- 插值表达式
${expression} 表达式
int e=5;
int f=8;
print("e+f = ${e+f}"); //e+f = 13
print("e= $e"); //e= 5
- 代表将字符串重复出现几次
常用属性: length 、isEmpty 、isNotEmpty
常用方法 替换,索引,去分隔,截取,大小写转换等。
4. 布尔类型:
bool true false
5. List(数组)
创建List
var list=[1,2,3];
var list2=const[1,2,4,6];
var list3=new List();
image.png
列表-List
6.键值对-Map
map相关操作
image.png
Runes,Symbols类型(用不到)
dynamic 相当于java中的泛型
二、运算符
1.算数运算符:
image.png
2.关系运算符:
== 、!= 、>、 <、 >=、 <=
需要注意的是:java中字符串判断内容是否相同使用equal ,判断地址相同才使用== ,而在Dart中使用== 表示内容判断
3.逻辑运算符:
! 、&&、 ||
4.赋值运算符:
- 4.1基础运算符: = 、??=
- 4.2复合运算符:+= 、-=、*=、/=、%=、~/=
// ??= 运算符的含义,如果有初始值,则使用,没有值,则进行赋值
int r=10;
int v;
v ??=r;
print(v); // 10
v=90;
v ??=r;
print(v); //90
条件表达式
- 三目运算符 :condition?expr1 : expr2;
- ?? 运算符:expr1??expr2
// ?? 条件表达式
String sss;
String str2="dart";
String ss=sss??str2;
print(ss); //dart
循环语句
for(var index=0;index
switch...case...语句:
比较类型:num,String,编译器常量
continue 跳转标签
三、方法特性
方法也是对象,并且有具体类型Fucnction
返回值类型,参数类型都可以省略
箭头语法: => expr 是 {return expr;}缩写
方法都有返回值,如果没有指定,默认return null;
可选参数
可选命名参数{param1、param2、...}
可选位置参数[param1、param2、...]
void main(){
getPerson("OnexZgj");
getPerson("OnexZgj",age: 18);
getPerson("OnexZgj",age: 18,male: true);
getPerson2("Linsa");
getPerson2("Linsa",17);
getPerson2("Linsa",17,false);
}
//可选参数类型
getPerson(String name,{int age,bool male}){
print("name= $name,age=$age,male=$male");
}
getPerson2(String name,[int age,bool male]){
print("name= $name,age=$age,male=$male");
}
输出如下结果:
name= OnexZgj,age=null,male=null
name= OnexZgj,age=18,male=null
name= OnexZgj,age=18,male=true
name= Linsa,age=null,male=null
name= Linsa,age=17,male=null
name= Linsa,age=17,male=false
四、方法对象Function
void main() {
//匿名方法的调用
Function fuc = (str){
print("the world is beautiful! $str");
};
fuc(123);
//方法对象使用
var method = printInfo();
method();
}
printInfo () {
print("Hello OnexZgj");
}
五、闭包
闭包是一个方法(对象)
闭包定义在其它方法的内部
闭包的作用,通过闭包,将方法内部的局部变量暴露出来。
void main() {
var method=a();
method();
method();
method();
}
a() {
var count = 0;
// printInfo() {
// print(count++);
// }
// return printInfo;
return (){
print(count++);
};
}
练习代码
void main() {
int a = 10;
double b = 12.5;
print("hello world OnexZgj");
//num 常用函数
double c = 10.5;
print(c.floor()); //不大于本身的最大整数 10
print(c.ceil()); //大于本身的最小整数 11
print(c.abs()); // 绝对值 10.5
print(c.round()); //四舍五入 11
print(c.toInt()); // 10
print(c.toDouble()); // 10.5
//字符串常见方法
String str = "hello";
print(str * 2); //hellohello
print(str[1]); //e
//插值表达式
int e = 5;
int f = 8;
print("e+f = ${e + f}"); //e+f = 13
print("e= $e"); //e= 5
//布尔类型
bool F = true;
bool D = false;
print(F);
//创建数组
var list = [1, 2, 3];
var list2 = const [1, 2, 4, 6];
var list3 = new List();
list.forEach(print);
//创建Map
var map = {"name": "onexzgj", "sex": "man"};
print(map); //{name: onexzgj, sex: man}
//常量map
var map1 = const {"age ": 23, "isStudent": true};
print(map1); //{age : 23, isStudent: true}
//list转为map的操作
var map2 = list.asMap();
print(map2); //{0: 1, 1: 2, 2: 3}
// ??= 运算符的含义,如果有初始值,则使用,没有值,则进行赋值
int r=10;
int v;
v ??=r;
print(v); // 10
v=90;
v ??=r;
print(v); //90
// ?? 条件表达式
String sss;
String str2="dart";
String ss=sss??str2;
print(ss); //dart
for(var index=0;index