# Dart In Action -Dar的基本数据类型（一）

## 数字

Dart的数字一共分为2类：

• `int` 整型不大于64位，具体取决于平台。 在Dart VM上，值可以是-263到263 - 1.编译为JavaScript的Dart使用JavaScript 数字，允许从-253到253 - 1的值。
• `double` 64位（双精度）浮点数，由IEEE 754标准规定。

`int`和double都是`num`的子类型。 `num`类型包括基本运算符，如+， - ，/和*，也是你可以找到`abs()``ceil()``floor()`以及其他方法的地方。 （按位运算符，如`>>`，在`int`类中有定义。）如果num及其子类没有您要想要内容，那dart：math库可能有您想要的。

```int x = 1;

```double y = 1.1;
double exponents = 1.42e5;```

```// String -> int
var one = int.parse('1');
assert(one == 1);

// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);

// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');

// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');```

`int`类型指定传统的按位移位（<<，>>），AND（＆）和OR（|）运算符。 例如：

```assert((3 << 1) == 6); // 0011 << 1 == 0110
assert((3 >> 1) == 1); // 0011 >> 1 == 0001
assert((3 | 4) == 7); // 0011 | 0100 == 0111```

```const msPerSecond = 1000;
const secondsUntilRetry = 5;
const msUntilRetry = secondsUntilRetry * msPerSecond;```

## 字符串

Dart字符串是一系列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 s4 = "It's even easier to use the other delimiter.";```

```var s = 'string interpolation';

assert('Dart has \$s, which is very handy.' ==
'Dart has string interpolation, ' +
'which is very handy.');
assert('That deserves all caps. ' +
'\${s.toUpperCase()} is very handy!' ==
'That deserves all caps. ' +
'STRING INTERPOLATION is very handy!');```

```var s1 = 'String '
'concatenation'
" works even over line breaks.";
assert(s1 ==
'String concatenation works even over '
'line breaks.');

var s2 = 'The + operator ' + 'works, as well.';
assert(s2 == 'The + operator works, as well.');```

```var s1 = '''
You can create
multi-line strings like this one.
''';

var s2 = """This is also a
multi-line string.""";```

`var s = r'In a raw string, not even \n gets special treatment.';`

```// 这些在const String可以使用.
const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';

// 这些在const String中不能使用.
var aNum = 0;
var aBool = true;
var aString = 'a string';
const aConstList = [1, 2, 3];

const validConstString = '\$aConstNum \$aConstBool \$aConstString';
// const invalidConstString = '\$aNum \$aBool \$aString \$aConstList';```

## 布尔值

Dart的类型安全意味着您不能使用`if（nonbooleanValue）``assert（nonbooleanValue）`等代码。 相反，明确检查值，如下所示：

```// Check for an empty string.
var fullName = '';
assert(fullName.isEmpty);

// Check for zero.
var hitPoints = 0;
assert(hitPoints <= 0);

// Check for null.
var unicorn;
assert(unicorn == null);

// Check for NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);```

## 列表

Dart列表文字看起来像`JavaScript`数组文字。 这是一个简单的Dart List：

`var list = [1, 2, 3];`

```var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);

list[1] = 1;
assert(list[1] == 1);```

```var constantList = const [1, 2, 3];
// constantList[1] = 1; // 取消注释会导致错误。```

List类型有许多方便的方法来操作列表。 有关列表的更多信息，请参阅泛型集合

## 映射

```var gifts = {
// Key:    Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};

var nobleGases = {
2: 'helium',
10: 'neon',
18: 'argon',
};```

```var gifts = Map();

var nobleGases = Map();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';```

```var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds'; // 新增一个键值对```

```var gifts = {'first': 'partridge'};

```var gifts = {'first': 'partridge'};

```var gifts = {'first': 'partridge'};

```final constantMap = const {
2: 'helium',
10: 'neon',
18: 'argon',
};

// constantMap[2] = 'Helium'; // 取消注释会导致错误。```

49 篇文章12 人订阅

0 条评论

## 相关文章

1584

3709

933

782

4852

4328

27610

### 唠唠SE的集合-00——概述 原

由于是数组实现，在增和删的时候会牵扯到数组增容、以及拷贝元素，所以慢。

892

28211

### 厚土Go学习笔记 | 11. for循环 go语言只有for循环

Go 只有一种循环结构—— for 循环。 基本的 for 循环包含三个由分号分开的组成部分： 初始化语句：在第一次循环执行前被执行 循环条件表达式：每轮迭代开...

3617