企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
test.dart ## 变量 1. 使用var声明变量 2. 默认值为**null** 3. 使用**final**声明一个只能赋值一次的变量 ~~~ void main(){ var a; console.log(a);//null a = 10; print(a);//10 a = "xxxx"; print(a)//xxx final c =10; c = 50;//报错 } ~~~ ## 常量 1. 使用const声明常量 2. 使用const声明的必须是编译期常量(编译阶段就能知道它的值) 3. final和const是有本质区别的。 ~~~ const d =20; d =5;//报错,常量不能修改 ~~~ ## 内置类型 1. 数值型-Number 2. 字符串-String 3. 布尔型-Boolean 4. 列表-List 5. 键值对-Map 6. Runes、Symbols ## 数值型 num:整型(int),浮点型(double) ~~~ void main(){ num a =10; a = 12.5; //可以 int b = 20; b = 20.5 //报错 double c = 10.4; c = 30; //报错 } ~~~ ## 数值型操作 1. 运算符:加减乘除 %(取余) ~/(取整) 2. 常用属性:isNaN,isEven,isOdd等 3. 常用方法 abs()(绝对值),round()(四舍五入)floor(),ceil(),toInt(),toDouble() ~~~ void main(){ num a =10; a = 12.5; //可以 int b = 20; //b = 20.5 //报错 double c = 10.4; //c = 30; //报错 print(0.0/0.0) 是NaN print(b.isEven) print(b.isOdd) int e = -100; print(e.abs()) } ~~~ ## 字符串(string) 1. 使用单引号,双引号创建字符串 2. 使用三个引号或三个双引号创建多行字符串 3. 使用r创建元素raw字符串 ~~~ String str1 = 'Hello';// "" String str2 = '''hello Dart ''';//或""" print(str2); String str3 = 'hello \n Dart';//换行 print(str3); String str4 = r'hello \n Dart';//直接打印 print(str4); ~~~ ## 字符串操作 1. 运算符+、*、==(比较)、[](获取某标的字符) 2. 插值表达式:${expression} 3. 常用属性:length,isEmpty,isNotEmpty ~~~ String str5 = "This is my test"; print(str5 + "xxx"); print(str5 * 5);//输出5遍 int a = 1; int b = 2; print("a + b = ${a + b}"); print("a = $a"); print(str5.isEmpty) ~~~ ## 常用方法 1. contains() 是否包含true false,subString():截取字符串 2. startsWidth() 是否以一个字符串开头或结尾,endsWidth(); 3. indexOf(), lastIndexOf() 4. toLowerCase(), toUpperCase() 5. trim(),trimLeft(), trimRight() 6. split() 分割字符串,replaceXXX() 替换(replaceAll,replaceFirst,replaceAllMapped,replaceRange,replaceFirstMapped) ## 布尔型 1. 使用bool 表示布尔型类型 2. 布尔值只有true,false ~~~ bool isTrue = true; ~~~ ## 列表(List) ### 创建 1. 创建List:var list = [1, 2, 3]; 2. 创建**不可变**的List:var list = const[1, 2, 3]; 3. 构造创建:var list = new List(); ~~~ var list1 = [1, 2, 3, "Dart", true]; print(list1); ~~~ ## 常用操作 1. [],length 2. add(), insert() 3. remove(), clear() 4. indxOf(), lastIndexOf() 5. sort()(排序,正序), sublist() 6. shuffle(), asMap(), forEach() ~~~ var list = ['hello', 'dart']; list.add('new'); //list.insert(index,element); list.insert(1, "java"); print(list); list.remove('java');//移除值 print(list); list.removeAt(list.length-1);//根据下标移除 print(list); //list.clear();//清空 print(list.indexOf('dart')); //-1 或位置 list.sort(); print(list.sublist(1)); list.forEach(print); ~~~ forEach的实现方法 ~~~ void forEach(void f(E element){ for(E element in this) f(element); }) ~~~ forEach中传入的是一个方法 list方法中还有: addAll,asMap,cast,castFrom,copyRange,fillRange,firt,getRange,insert,insertAt ## Map ### 创建 1. 创建Map:var language = { 'first': 'Dart'}; 2. 创建不可变Map:var language = const { 'first': 'Dart'}; 3. 构造创建:var language = new Map(); ### 常用操作 1. [], length(map可以获取长度) 2. isEmpty(), isNotEmpty() 3. keys, values 4. containsKey(),containsValue() 5. remove() 6. forEach() ~~~ var map = {'first': 'dart', 'second': 'javascript'}; print(map.keys); print(map.values); print(map.containsKey('first')); print(map.containsValue('dart')); map.forEach(f); void f(key, value){ print("key= $key,value = $value") } var list = ["1","2", "3"]; print(list.asMap());//list转为map ~~~ map的forEach要传入两个值 ~~~ void forEach(void f(K key, V value){ }) ~~~ ## dynamic(动态类型) ~~~ var a ; a = 10; a = "Dart"; dynamic b = 20; b = "javascript"; //泛型 var list = new List<dynamic>(); list.add(1); list.add('javascript'); print(list); ~~~