内置类型
Dart内置了如下的几种数据类型:
- 数值型-Number
- 字符串-String
- 布尔型-Boolean
- 列表-List
- 键值对-Map
- Runes(不常见)
- Symbols(不常见)
Number
Mumber(num)
包含两种子类型整型 int
和浮点型 double
这两种子类型,只是数值范围和精度不同而已。int
类型的值为整型,切取值范围为-2^53
到2^53
,而double
采用的是IEEE 754标准
num操作
-
运算符:
+、-、*、/、~/、%
加、减、乘、除、取整、取余 -
常用属性:
isNaN
如果数值是double的NaN值(Not a Number,非数。是计算机科学中数值数据类型的一类值,表示未定义或不可表示的值。常在浮点数运算中使用。详情见百度百科:https://baike.baidu.com/item/nan/7455322?fr=aladdin),返回true,否则为false。isEven
用来判断是否偶数isOdd
用来判断是否奇数
-
常用方法:
abs()
返回num的绝对值round()
四舍五入,返回最接近this的整数。floor()
向下取整,或者说向下舍入,返回不大于this的最大整数。ceil()
向上取整,或者说向上舍入,返回不小于this的最小整数。toInt() → int
将num截断成整数,结果作为int值返回。toDouble()
将num作为double值返回。
Strings(字符串)
Dart使用的是UTF-16字符集
- 声明一个字符串可以使用单引号
''
,也可以使用双引号""
- 使用
${expression}
语法可以将一个值动态插入到字符串中,如果需要插入的值简单表达式是一个标识符,无需计算的话可以省略{}
- 创建多行字符串,可以使用
'''
语法,这会按照多行输出
String a = '''
在这里可以创建
像这样的多行字符串
''';
- 可以直接写多行进行字符串拼接
String a = '字符1'
'字符2'
"字符3"
// 输出 字符1字符2字符3
- 还可以使用
+
进行字符串拼接 - 不同数据类型的变量拼接只能是
num,String,bool
类型
字符串和数字之间的转化
1.字符串和数字转化
使用parse方法,可以经字符串转换为数字类型
var one = int.parse('111');
var two = double.parse('12.21');
print('${one} ${one.runtimeType}'); // 111 int
print('${two} ${two.runtimeType}'); // 12.21 double
2.数字转字符串
var num1 = 123;
var num2 = 123.456;
var num1Str = num1.toString();
var num2Str = num2.toString();
var num2StrD = num2.toStringAsFixed(2); // 保留两位小数(看资料和网上博主的blog好多人多说是四舍五入,实测下来是五舍六入,不清楚他们怎么得出来的四舍五入的)
print('${num1Str} ${num1Str.runtimeType}'); // 123 String
print('${num2Str} ${num2Str.runtimeType}'); // 123.456 String
print('${num2StrD} ${num2StrD.runtimeType}'); // 123.46 String
Boolean(布尔)
在Dart中提供了bool类型,取值为true和false 注意: Dart中不能判断非0即真, 或者非空即真
Dart的类型安全性意味着您不能使用if(非boolean值)或assert(非boolean值)之类的代码。
var message = 'Hello Dart';
// 错误的写法
if (message) {
print(message)
}
集合类型
对于集合类型,Dart内置了最常用的三种:List/Set/Map
。
List:
List在其他语言中,通常称为数组,也就是某一种特定类型的集合,在Dart中称为List List可以如下定义:
// 1.使用类型推导定义
var letters = ['a','b','c'];
// 2.明确指定类型
List<int> list = [1,2,3,4];
Set:
Set
是一个_元素唯一_的_无序数组_,不能够通过索引值去获取内容,它的主要功能是去除重复的数组内容
它其实就是特殊的数组,把[]换成{}即可
var s=new Set();
s.add('香蕉');
s.add('苹果');
s.add('苹果');
print(s); //{香蕉, 苹果}
print(s.toList()); //[香蕉, 苹果]
List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
var s=new Set();
s.addAll(myList);
print(s);//{香蕉, 苹果, 西瓜}
print(s.toList());//[香蕉, 苹果, 西瓜]
Map
Map是我们常说的字典类型
- 常用属性:
keys 获取所有的key值
values 获取所有的value值
isEmpty 是否为空
isNotEmpty 是否不为空
- 常用方法:
remove(key) 删除指定key的数据
addAll({...}) 合并映射 给映射内增加属性
containsValue 查看映射内的值 返回true/false
forEach
map
where
any
every