前言
本节接着第二节讲解:数值类型、字符串类型
视频讲解地址:传送门
数值型
Dart中的数值型可以分为两种,int类型,double类型
int类型
int类型为任意大小的整数。
在数学中的整数概念如下:
整数(integer)是正整数、零、负整数的集合。
看一个例子:
如果声明时为赋值会输出null,第一节课讲过原因。Dart中所有声明时未赋值变量都为null。
double类型
Dart Double是IEEE 754标准中指定的64位浮点数。
因为Dart中也使用了IEEE 754标准的64位浮点数类型,javascript也一样,所以大家比较了解的一些浮点数精度问题在Dart中依然存在,比如下方情况。
0.1 + 0.2 != 0.3
23.6 - 23 != 0.6
javascript中也是一样的场景,因为参照了同样的浮点数规则。
这一点大家注意一下即可,如果想知道具体原理,这两天我将把这类情况单独写篇文章剖析一下。
我们需要注意的是,平时开发中注意精度收拢即可。
属性及方法
这里我们主要讲一下int类型变量的一些属性和方法。
hashcode
返回数值的hash码,看一下例子:
输出:
isFinite
如果数字有限,则为真;
什么情况为无限情况呢?Dart中有这样的一种情况
isInfinite
该数字是正无穷大还是负无穷大。如果都不是则返回false;
isNaN
如果数字是双重非数字值,则为真; 否则,是的。
isNegative
如果数字是负数,则此属性返回布尔值true。
isEven & isOdd
是否是偶数,是否是奇数
abs()
返回数字的绝对值。
ceil()
返回不小于该数字的最小整数
floor()
返回不大于当前数字的最大整数
compareTo(x)
它返回一个整数,表示两个数字之间的关系。
- 0 - 如果值相等。
- 1 - 如果当前数字对象大于指定的数值。
- -1 - 如果当前数字对象小于指定的数字值。
round()
此方法返回舍入到最接近整数的数字的值。可理解为四舍五入
toDouble()
整型转双精度浮点类型。
toInt()
双精度浮点类型转整型。以裁剪方式,无四舍五入
toString()
此方法返回数字值的字符串表示形式
官方还有一些不是很常用的属性及方法,这里就没有多说,上面的例子大家以javascript的思想来理解就可以了。
字符串
在Dart中字符串有几种表现形式。
- 单行字符串使用单引号或双引号编写
- 多行字符串使用三引号编写
- 单引号包含双引号
- 双引号包含单引号
- 三引号包含双引号和单引号
输出:
字符串拼接
字符串拼接使用+
.
相邻拼接
$拼接
如果拼接处为变量直接使用$
如果拼接处为表达式使用${}
属性及方法
索引运算符
String类型字符串可通过索引运算符访问代码但愿的字符串表示形式
字符串切割
使用substring切割字符串,返回切割索引范围内容
isEmpty
此字符串是否为空。
isNotEmpty
此字符串是否不为空
length
获取字符串长度
trim()
去除字符串前后的空格并返回
compareTo()
比较两个字符串之间的关系
关系对照表:
- 0 - 字符串相等时。
- 1 - 当第一个字符串大于第二个字符串时
- -1 - 当第一个字符串小于第二个字符串时
该顺序与两个字符串不同的第一个位置处的代码点的顺序相同。如果一个字符串是另一字符串的前缀,则较短的字符串将在较长的字符串之前排序。如果字符串具有完全相同的内容,则它们在排序方面是等效的。排序不检查Unicode等效性。比较是区分大小写的。
replaceAll()
用给定值替换与指定模式匹配的所有子字符串。
支持正则表达式
replaceRange()
replaceRange第一个参数是开始下标,第二个参数是结束下标,第三个参数是要替换的字符串。替换的字符串包含开始下标,不包含结束下标,并且开始下标的数字要>=0,小于等于结束下标,结束下标的值要小于等于字符串长度,否则会报错。
split()
用给定值替换与指定模式匹配的所有子字符串。
END
第三节讲解,数值类型、字符串类型,这两个知识点中与javascript的区别还是较多的,需要大家使用的时候注意下。打算开两个分支文章,关于hashCode,关于IEEE 浮点类型原理。