俗话说的好,“磨刀不误砍柴工”,
所以
我们在学习Dart语言之前需要先进行相关的基础学习,
将我们的基础先打扎实!
老规矩,我们先看一下我的思维导图对于学习的整体思路。
在学习一个新东西前,首先问自己几个问题。是什么?为什么?怎么用?来进行逐层深入学习。
数据类型
Numbers数值型
int整数型
double浮点型
String字符型
字符串中的方法
字符串模板表示
字符串插值处理
数值型与字符型之间的转换
Boolean布尔型
Bool用于判断的方法
集合型
集合型List、Set、Map
Stream
定义
Stream的操作
count()元素个数
distinct()方法
数据过滤
数据分页
求最大值
求最小值
总结
数值型中主要是int(整数型)、double(浮点型)。
表示的是整数,也就是非小数的值,例如:1、10、100...(int类型不能包含小数点)
int整型的取值范围:
如果是8位Int8,它们的范围(包括)【 -128 , 127】
如果是16位Int16,它们的范围(包括) 【-32768 , 32767】
如果 32 位Int32,它们的范围(包括)【,
】
如果 64 位Int64,它们的范围(包括)【,
】
如果符号位为 1,int则为负;如果为 0,int
则为非负数。
表示的是小数数值即带小数点的值,dart中的Double表示的是64位双精度浮点数,例如:1.20、10.20...
double的取值范围:【1.7976931348623157E308,4.9E-324】
浮点型中的一些属性和方法:
【属性】
【方法】
【补充】
精度损失:精确值转成近似值可能会损失精度。
(最直观理解比如计算机中能否表示三分之一)
字符串代表一系列的字符,比如变量、常量名称,地址等都会用字符串数据类型来表示。
Dart字符串String是UTF-16的编码序列,可以使用单引号或者双引号来表示字符串。
var s1 = 'Single quotes work well for string literals.';
var s2 = "Double quotes work just as well.";
var s3 = 'It\'s easy to escape the string delimiter.';
//创建多行字符串的方法:可以用三引号或双引号
var s1 = '''
You can create
multi-line strings like this one.
''';
var s2 = """This is also a
multi-line string.""";
注意:当要表达32位的Unicode值时就需要使用Runes了。
var a = 123;
String b = 'dart : ${a}';
可以用 ${expression} 将一个表达式插入到字符串中。
如果这个表达式是一个变量,可以省略 { } 。为了得到一个对象的字符串表示,Dart会调用对象的 toString() 方法。代码如下:
String name = '张三';
int age = 20;
//插入变量可以不用{}
String s1 = '$name的年龄是$age';
print(s1);
int score = 90;
//插入条件表达式必须加入{}
String s2 = '成绩${score >= 60 ? '合格' : '不合格'}';
print(s2);
字符串转数字的方法
parse()
数字转字符串的方法
toString()
布尔数据类型提供内置支持,Dart中的布尔数据类型仅支持两个值 - true
和false
。
关键字bool
用于表示Dart中的布尔文字。
List
定义:List是一种有序列,即元素的有序集合。List集合是具有长度的可索引对象集合。
创建列表的分类与方法:
创建列表的其他方法:
区分List.from和List.of重要区别在于,后者具有类型注释,而前者则没有。
var foo = new List.from([1, 2, 3]); // List
var bar = new List.of([1, 2, 3]); // List
List中常用属性:
List中常用方法:
List中的遍历:
List去重方法:toSet()、contains()、比较器去重
Set
定义:Set是一种有序列,不可保存重复数据,也就是说Set中的数据具有唯一性。
Set中常用方法:
List VS Set
形式上:List的数组表示利用[ ] ;Set的数组表示利用{ }
内容上:
- list可以插入多个null元素,而set只允许插入一个null元素;
- list容器是有序的,而set容器是无序的;
- list方法可以允许重复的对象,而set方法不允许重复对象等等。
Map
定义:Map是一个键值对相关的对象,键和值可以是任何类型的对象。每个键只出现一次,而一个值则可以出现多次。映射是动态集合。 换句话说,Maps可以在运行时增长和缩小。
注意:key和value都可以是任意类型的对象,key只能出现一次,value可以出现多次。
Map对象的中key是不能重复的。
Map的定义方式:
不指定泛型:
//直接赋值
var map1 = {'aa':'aaa','bb':22,'cc':true};
Map map2 = {'a':'a1','b':'b1'};
//间接赋值
var map3 = new Map();
map3['aa'] = 'aaa';
Map map4 = new Map();
map4['a'] = 'aaa';
指定泛型:
//直接赋值
var map1 = {'aa':'aaa','bb':'22','cc':'333'};
Map map2 = {'a':'a1','b':'b1','c':'c1'};
//间接赋值
var map3 = new Map();
map3['aa'] = 'aaa';
Map map4 = new Map();
map4['a'] = 'a1';
Map的属性:
Map的方法:
正对于Map的一些基础操作:
代码如下:
void main(){
// 根据key获取value
var infoMap1={'name':'psy','age':18};
print(infoMap1['name']);
// 获取所有的entries
var infoMAp1={'name':'psy','age':18};
print('${infoMap1.entries}${infoMap1.entries.runtimeType}');
// 获取所有的keys
print('${infoMap1.keys} ${infoMap1.keys.runtimeType}');
//获取所有的values
print('${infoMap1.values} ${infoMap1.values.runtimeType}');
// 判断是否包含某个key或者value
print('${infoMap1.containsKey('age')} ${infoMap1.containsValue(18)}');//true true
// 根据key删除元素
infoMap1.remove('age');
print('hello!'+'${infoMap1}');
}
以上就是最近所学的内容啦,希望对你能有所帮助~
~bye~