数据类型

2-1变量与常量

使用var生命变量 未初始化默认为nullvoid main() {  // 既可以赋值数字也可以字符串  var a;  // 打印出null 由于声明未赋值  print(a);  a = 10;  // 打印出10  print(a);  // 打印出字符串hello dart  a = 'hello dart';  print(a);  // 既可以声明的时候赋值 也可以声明后赋值 打出20  var b = 20;  print(b);  //  final c = 30;  // final只能赋值一次的变量 不能继续赋值了  // c=50;  print(c);  // const声明常量 必须是编译器常亮  const d = 20;  // 常亮也是不能修改的  // d=50;  print(d);}

2-2数值型

void main() {  // num是数值型的总称 包括浮点型(带小数点)和整形  num a = 10;  a = 12.5;  print(a);  int b = 20;  // double的值不能赋给int  // b=20.5  print(b);  double c = 10.5;  print(b + c);  print(b - c);  print(b * c);  print(b / c);  // 取整 1 20除以10.5取了整就是1  print(b ~/ c);  // 取余 9.5  print(b % c);  // 非数字 定义在double方法中 0.0/0.0=NAN  print(0.0 / 0.0);  // 打印b是否为偶数true  print(b.isEven);  //  打印b是否为奇数false  print(b.isOdd);  int e = -100;  //  abs()方法取绝对值  print(e.abs());  double f = 10.5;  //  四舍五入11  print(f.round());  //  向下取整10  print(f.floor());  //  向上取整11  print(f.ceil());  //  转化为整形10  print(f.toInt());  //  转化为浮点型10.5  print(f.toDouble());}

2-3字符串

void main() {  //  String str1 = 'hello';  // 三个引号代表打印多行字符串 或者三个双引号  String str2 = '''hello  dart''';  print(str2);  // \n换行  String str3 = 'hello \n dart';  print(str3);  // 字符串前面加个r可以避免字符被转义 打出hello \n dart  String str4 = r'hello \n dart';  print(str4);  String a1 = 'this is my fav lan';  // + this is my fav lannew  print(a1 + 'new');  // *代表打印5次  print(a1 * 5);  // 比较两字符串是否相同  print(str3 == a1);// 取字符串第几位  print(a1[0]);  int a = 1;  int b = 2;// 插值表达式 ${}可以转义为计算a+b的值 a+b=3  print('a+b=${a + b}');// 如果插值表达式直接取变量值 就可以把大括号省略掉  print('a=$a');  // 取字符串长度  print(a1.length);  // 判断字符串是否为空  print(a1.isEmpty);  // 是否包含某个字符串  print(a1.contains('this'));  // 从0开始截取3位  print(a1.substring(0, 3));  // 是否是以a开头的 false  print(a1.startsWith('a'));  //  是否已a结尾  print(a1.endsWith('a'));  //  第一个i对应的下标  print(a1.indexOf('i'));  // 最后一个i对应的下标  print(a1.lastIndexOf('i'));  // 去前后的空格 left right可以单独去  print(a1.trim());  // 大写  print(a1.toUpperCase());  // 以空格进行分隔 返回数组  var a2 = a1.split(' ');  print(a2);  // 替换  print(a1.replaceAll('this', 'that'));}

2-4布尔型

void main() {  // 声明方法 只有true或者false  bool a = true;  bool b = false;  print('hello'.isEmpty);}

2-5列表

void main() {  // list元素可以是不同类型的  var list1 = [1, 2, 3, 'dart', true];  print(list1);  // 取第0个元素  print(list1[0]);  // 更改第1个元素  list1[1] = 'hello';  print(list1);  // 内容不可变的list  var list2 = const [1, 2, 3];  // 报错 不能修改常量数组  // list2[0]=5;  // list的创建  var list3 = new List();  // 打印[]  print(list3);  var a = ['heloo', 'dart'];//  长度  print(a.length);//  最后一位插入元素  a.add('new');  print(a);// 在第二个元素插入字符串  a.insert(1, 'java');  print(a);//  在数组中移除元素  a.remove('java');  print(a);//  清空数组//  a.clear();  print(a);//  是否包含某个元素 包含的话会打出元素下标 不包含打出-1  print(a.indexOf('dart'));  print(a.indexOf('dart1'));//  按字母或者数值进行排序 [dart, heloo, new]  a.sort();  print(a);// 从第二个元素开始截取[heloo, new]  print(a.sublist(1));// 把元素逐个打印 传入的是一个方法  a.forEach(print);}

2-6Map

void main() {  // 每一组元素都有键和值true:'2'不建议这样做  var map1 = {"first": "dart", 1: true, true: '2'};  print(map1);  // 打印key=first的value值   dart  print(map1['first']);  print(map1[true]);  // 修改map值  map1[1] = false;  print(map1);  var map2 = const {1: 'dart', 2: 'java'};  // 不能给不可变得map修改值  // map2[1]='1';  // 初始化  var map3 = new Map();  var a = {'first': 'dart', 'second': 'java', 'third': 'ph'};  // 长度  print(a.length);  print(a.isEmpty);  print(a.isNotEmpty);  //(first, second, third)  print(a.keys);  // (dart, java, ph)  print(a.values);  // 是否包含某个key  print(a.containsKey('first'));// 是否包含某个value  print(a.containsValue('a'));// 移除key=third的那一项  a.remove('third');  print(a);// 传入一个方法 方法用插值表达式 取$key $value 结果:key=first,value=dart key=second,value=java  a.forEach(f);// list转成map 下标作为key 元素作为值  var list = ['1', '2', '3'];  print(list.asMap());}void f(key, value) {  print('key=$key,value=$value');}

2-7dynamic

void main() {  // a是动态类型 所以可以赋予不同的值  var a;  a = 10;  a = 'dart';  // 声明动态类型 new List<dynamic>();创建一个泛型 list中的类型随意  dynamic b = 20;  b = 'java';  var list = new List<dynamic>();  list.add(1);  list.add('hello');  list.add(true);  print(list);}

运算符

3-1算数运算符

void main() {  int a = 10;  int b = 20;  print(a + b);  print(a - b);  print(a * b);  print(a / b);  print(a ~/ b);  print(a % b);  // 先使用a的值进行打印方法 再去给a加1 10  print(a++);  // 先进行+1 再把a的值传入print方法打印 12  print(++a);  // 12 先操作 再减1  print(a--);  // 10  print(--a);}

3-2关系运算符

void main() {  int a = 5;  int b = 3;  // 判断内容是否相等 不判断类型  print(a == b);  print(a != b);  print(a > b);  print(a < b);  print(a >= b);  print(a <= b);  String a1 = '111';  String b1 = '321';  print(a1 == b1);}

3-3逻辑运算符

void main() {  bool ist = true;  bool isf = false;  print(!ist);  // &&都为true才为true  print(ist && isf);  // ||一个为真就真  print(ist || isf);  // String a;  // 声明后不赋值不能判断 为null  // print(a.isEmpty);  String a = '';  // true  print(a.isEmpty);  // false  print(!a.isEmpty);}

3-4赋值运算符

void main() {  int a = 10;  int b = 5;  // b??=10; b没有值会赋值 有值则无效  b ??= 10;  // 5  print(b);  // 12  a += 2;  print(a);  // 7  a -= 5;  print(a);// 相当于a*b=? 35  print(a *= b);// 7  print(a ~/= b);// 2  print(a %= b);// print(a/=b);}

3-5条件表达式

void main() {  int gender = 0;  // 三目运算符  // String a=gender==0?'male':'female';  String a = gender == 0 ? 'male=$gender' : 'female=$gender';  print(a);  String b;  String c = 'java';// b如果为空把c给b  String d = b ?? c;  print(d);}