Dart语言之数据类型

俗话说的好,“磨刀不误砍柴工”,

所以

我们在学习Dart语言之前需要先进行相关的基础学习,

将我们的基础先打扎实!

老规矩,我们先看一下我的思维导图对于学习的整体思路。

Dart语言之数据类型_第1张图片

在学习一个新东西前,首先问自己几个问题。是什么?为什么?怎么用?来进行逐层深入学习。

目录

数据类型

Numbers数值型

int整数型

double浮点型

String字符型

字符串中的方法

字符串模板表示

 字符串插值处理

数值型与字符型之间的转换

Boolean布尔型

Bool用于判断的方法

集合型

集合型List、Set、Map

Stream

定义

Stream的操作

count()元素个数

distinct()方法

数据过滤

数据分页

求最大值

求最小值

总结


数据类型

Numbers数值型

数值型中主要是int(整数型)、double(浮点型)。

int整数型

表示的是整数,也就是非小数的值,例如:1、10、100...(int类型不能包含小数点)

int整型的取值范围:

如果是8位Int8,它们的范围(包括)【 -128 , 127】
如果是16位Int16,它们的范围(包括) 【-32768 , 32767】

如果 32 位Int32,它们的范围(包括)【-2^{31}2^{31-1}

如果 64 位Int64,它们的范围(包括)【-2^{63}2^{63-1}

如果符号位为 1,int则为负;如果为 0,int则为非负数。

double浮点型

表示的是小数数值即带小数点的值,dart中的Double表示的是64位双精度浮点数,例如:1.20、10.20...

double的取值范围:【1.7976931348623157E308,4.9E-324】

浮点型中的一些属性和方法:

【属性】

  • *.isEven; 是否为偶数
  • *.isOdd;是否为奇数

【方法】

  • *.abs()绝对值
  • *.ceil()往大了取
  • *.floor()往小了取
  • *.toInt()转换为整型
  • *.round()四舍五入
  • *.toDouble()转换为浮点型

【补充】

精度损失:精确值转成近似值可能会损失精度。

(最直观理解比如计算机中能否表示三分之一)

String字符型

字符串代表一系列的字符,比如变量常量名称,地址等都会用字符串数据类型来表示。

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了。

字符串中的方法


 

Dart语言之数据类型_第2张图片

字符串模板表示

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() 

  • int.parse('111')转成整数型
  • double.parse('12.22')转成浮点型

数字转字符串的方法

toString()

Boolean布尔型

布尔数据类型提供内置支持,Dart中的布尔数据类型仅支持两个值 - truefalse

关键字bool用于表示Dart中的布尔文字。

Bool用于判断的方法

Dart语言之数据类型_第3张图片

集合型

集合型List、Set、Map

List

定义:List是一种有序列,即元素的有序集合。List集合是具有长度的可索引对象集合。

创建列表的分类与方法

  • 定长列表--List.filled()方法
  • 不可变列表--List.unmodifiable()方法
  • 可增长列表--growableList

创建列表的其他方法:

  • 构造空列表--List.empty
  • 构造列表--List.from
  • 构造列表--List.generate
  • 构造列表--List.of

区分List.from和List.of重要区别在于,后者具有类型注释,而前者则没有。

var foo = new List.from([1, 2, 3]); // List
var bar = new List.of([1, 2, 3]); // List

List中常用属性:

  • length获取长度
  • isEmpty判断列表是否为空
  • isNotEmpty判断列表是否非空
  • reversed列表数据反序后的可迭代对象
  • first返回列表的第一个元素
  • last返回列表的最后一个元素

List中常用方法:

Dart语言之数据类型_第4张图片

 List中的遍历:

  • for语句遍历列表
  • for...in语句遍历列表
  • List.forEach方法遍历列表

List去重方法:toSet()、contains()、比较器去重

Set

定义:Set是一种有序列,不可保存重复数据,也就是说Set中的数据具有唯一性。

Set中常用方法:

List VS Set

形式上:List的数组表示利用[ ] ;Set的数组表示利用{ }

内容上:

  1. list可以插入多个null元素,而set允许插入一个null元素
  2. list容器是有序的,而set容器是无序的;
  3. list方法可以允许重复的对象,而set方法不允许重复对象等等。

Map

定义:Map是一个键值对相关的对象,键和值可以是任何类型的对象。每个键只出现一次,而一个值则可以出现多次。映射是动态集合。 换句话说,Maps可以在运行时增长和缩小。

注意:key和value都可以是任意类型的对象,key只能出现一次,value可以出现多次。
Map对象的中key是不能重复的。

Map的定义方式:

Dart语言之数据类型_第5张图片

 不指定泛型:

//直接赋值
    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的属性:

Dart语言之数据类型_第6张图片

 Map的方法:

Dart语言之数据类型_第7张图片

 正对于Map的一些基础操作:

Dart语言之数据类型_第8张图片

 代码如下:

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}');
}

总结

以上就是最近所学的内容啦,希望对你能有所帮助~

Dart语言之数据类型_第9张图片

 ~bye~

你可能感兴趣的:(Dart,android)