网站设计制作一条龙免费,国内做网站上市公司,wordpress发文章下载,淄博哪里有网站建设平台1、基本数据类型 num、int、double
#xff08;1#xff09;常用数据类型
num类型#xff0c;是数字类型的父类型#xff0c;有两个子类 int 和 double
通过在函数名前加下划线#xff0c;可以将函数变成私有函数#xff0c;私有函数只能在当前文件中调用
//常用数据…1、基本数据类型 num、int、double
1常用数据类型
num类型是数字类型的父类型有两个子类 int 和 double
通过在函数名前加下划线可以将函数变成私有函数私有函数只能在当前文件中调用
//常用数据类型
void main() {_numType();
}//返回值为 void 的函数可省略 void
_numType() {//num类型是数字类型的父类型有两个子类 int 和 doublenum num1 -1.0; //doublenum num2 2; //intint num3 3; //只能是整数不可为 int 类型赋值 浮点数double num4 1.666; //双精度浮点数print(num1: $num1 num2: $num2 num3: $num3 num4: $num4);
}//num1: -1.0 num2: 2 num3: 3 num4: 1.6662数据类型常用方法及类型转换
绝对值函数 abs() 等
void main() {_numType();
}_numType() {num num1 -1.0;//绝对值print(num1: $num1 num1.abs(): ${num1.abs()});
}//num1: -1.0 num1.abs(): 1.0类型转换 toInt() 等
void main() {_numType();
}_numType() {num num1 -1.0;//数据类型转换print(num1: $num1 toInt(): ${num1.toInt()});
}//num1: -1.0 toInt(): -12、字符串 String
1字符串定义
定义字符串单引号/双引号 均可
void main() {_stringType();
}//字符串
_stringType() {//定义字符串单引号/双引号 均可String str1 窗前明月光, str2 疑是地上霜;String str3 $str1$str2;print(str3);
}//窗前明月光疑是地上霜2字符串常用方法
截断字符串 substring()查找子字符串位置 indexOf()对比字符串 compareTo()···
void main() {_stringType();
}//字符串
_stringType() {//定义字符串单引号/双引号 均可String str1 窗前明月光疑是地上霜;//截断字符串 substringprint(str1.substring(1, 5)); //前明月光//查找子字符串在父字符串˙中位置print(str1.indexOf(明月)); //2//对比两个字符串String str2 abc, str3 gdf;print(str2.compareTo(str3)); //-1
}3、布尔类型 bool
Dart 是强 bool 类型检查的只有 bool 类型的值是 true才被认为是 true
void main() {_boolType();
}// Dart 是强 bool 类型检查的只有 bool 类型的值是 true才被认为是 true
_boolType() {bool b1 true, b2 false;print(b1: $b1);print(b2: $b2);print(b1 || b2: ${b1 || b2});print(b1 b2: ${b1 b2});
}//b1: true
//b2: false
//b1 || b2: true
//b1 b2: false4、集合
4.1、集合 List
1List 的定义
初始化 List[]
void main() {_listType();
}_listType() {List list1 [1, 2, 3, Flutter, true];print(list1: $list1);Listint list2 [];// list2 list1; 报错 Listdynamic 类型无法转换成 Listintlist2.add(9);list2.add(8);list2.add(7);print(list2: $list2);List list3 [];list3.add(Hello);list3.addAll(list1);print(list3: $list3);
}//list1: [1, 2, 3, Flutter, true]
//list2: [9, 8, 7]
//list3: [Hello, 1, 2, 3, Flutter, true]List 生成函数grnerate
void main() {_listType();
}_listType() {List list1 List.generate(5, (index) index * 3);print(list1: $list1);List list2 List.generate(3, (index) index: $index);print(list2: $list2);
}//list1: [0, 3, 6, 9, 12]
//list2: [index: 0, index: 1, index: 2]2List 常用方法
遍历、插入、移除、截取、查找等方法使用
void main() {_listType();
}_listType() {List list List.generate(5, (index) index * 3);print(list: $list); //list: [0, 3, 6, 9, 12]//遍历集合print(--------------- 遍历 for ---------------);for (int i 0; i list.length; i) {print($i: ${list[i]});}print(--------------- 遍历 in ---------------);for (var e in list) {print(e);}print(--------------- 遍历 forEach ---------------);list.forEach((element) {print(element);});//插入list.insert(0, start);print(list); //[start, 0, 3, 6, 9, 12]//移出list.removeAt(1);print(list); //[start, 3, 6, 9, 12]list.remove(start);print(list); //[start, 3, 6, 9, 12]//截取List list2 list.sublist(0, 2);print(list: $list); //list: [3, 6, 9, 12]print(list2: $list2); //list2: [3, 6]//查找int index list.indexOf(9);print(index: $index);
}4.2、集合 Map
Map 是 key-value 键值对key 和 value 可以是任意类型
1Map 定义
void main() {_mapType();
}_mapType() {//Map 初始化Map map1 {xiaolan: 小蓝, 1: 小白, 1.2: true};print(map1); //{xiaolan: 小蓝, 1: 小白, 1.2: true}print(map1[1]); //小白Map map2 {};map2[1] true;map2[abc] 1.4;print(map2); //{1: true, abc: 1.4}MapString, int map3 {};map3[leon] 18;map3[alice] 19;print(map3); //{leon: 18, alice: 19}
}2Map 常用方法
遍历移除判断是否包含
void main() {_mapType();
}_mapType() {Map map {小蓝: 2, 小白: 1};print(map); //{{小蓝: 2, 小白: 1}// Map遍历map.forEach((key, value) {print(key: $key, value: $value);});//key: 小蓝, value: 2// key: 小白, value: 1//通过遍历生成 MapMap map2 map.map((key, value) {return MapEntry(key, value 1);});print(map2); //{小蓝: 3, 小白: 2}//遍历 keysfor (var key in map2.keys) {print(key: $key, value: ${map2[key]});}//key: 小蓝, value: 3// key: 小白, value: 2//遍历 valuesfor (var value in map2.values) {print(value: $value);}//value: 3// value: 2//移除元素map2.remove(小白);print(map2); //{小蓝: 3}//是否包含元素print(小白还在吗 ${map2.containsKey(小白)}); //小白还在吗 false
}5、补充dynamic、var、Object
1动态类型 dynamic dynamic 是所有 Dart 对象的基础类型在大多数情况下通常不直接使用它 当我们不给泛型类型指定一个类型时系统就会将其指定为动态类型如 List list []; 不建议使用 dynamic 类型因为通过它定义的变量会关闭静态类型检查有些异常只有运行时才能 carsh 出来 崩溃报错
void main() {_dynamicType();
}_dynamicType() {dynamic x 111;x.foo(); //报错崩溃//静态类型检查时不会报错//但运行时报错 NoSuchMethodError: Class String has no instance method foo.//因为 String 没有 foo() 这个方法但是因为关闭了检查只会在运行时报错
}静态变量检查时不报错
运行时会报 crash
查看运行时类型
void main() {_dynamicType();
}_dynamicType() {dynamic x 111;print(x 的运行时类型${x.runtimeType}); //x 的运行时类型Stringx 123;print(x 的运行时类型${x.runtimeType}); //x 的运行时类型int
}2关键字 var
var 是一个关键字定义变量时不关心变量类型是什么系统会自动推断类型 runtimeType类似 Kotlin 中的 varvar 声明的变量静态类型检查时会检查类型但动态类型 dynamic 不会检查
void main() {_var();
}_var() {var a AAA;print(a 的运行时类型${a.runtimeType}); //a 的运行时类型Stringa 11; //静态类型检查时会报错因为已经推断出是 String 类型不能在赋值 inta.foo(); //静态类型检查时会报错
}3Object 类型
Object 是 Dart对象的基类当定义 Object o ‘11’; 时系统会认为 o 是个对象可以调用 o 的 toString() 和 hashCode() 方法因为 Object 提供了这些方法Object 声明的变量静态类型检查时会检查类型
综上Object 和 dynamic 的区别就在于静态类型的检查上
void main() {_objectType();
}_objectType() {Object o1 11;print(o1运行时类型${o1.runtimeType}); //o1运行时类型Stringo1 123;print(o1运行时类型${o1.runtimeType}); //1运行时类型into1.foo(); //静态类型检查时会报错
}