文章目录
- 一、概述
- 1.为什么叫内建类型?
- 2.Dart的内建类型有哪些?
 
- 二、内建类型详解
- 1.num
- 2.int
- 3.double
- 4.String
- 5.bool
 
- 6.List
- 7.Map
- 8.Function
 
- 三、总结
 
一、概述
"The greatest glory in living lies not in never falling, but in rising every time we fall." - Nelson Mandela
"生活中最大的荣耀不在于从不跌倒,而在于每次跌倒后都能重新站起。" - 纳尔逊·曼德拉

1.为什么叫内建类型?
“内建类型”(built-in types)这个说法是因为 Dart 语言自带了一些数据类型,比如 int、double、String 等,用户不需要再定义就可以直接使用,因此这些类型被称为内建类型。
2.Dart的内建类型有哪些?
Dart 内建类型有:
- num:数字类型的父类型,包括- int和- double。
- int:整数类型。
- double:浮点数类型。
- String:字符串类型。
- bool:布尔类型。
- List:数组类型。
- Map:字典类型。
- Function:函数类型。
此外,Dart 还有一些特殊的内建类型,如 dynamic、var、Object 等。
二、内建类型详解
1.num
num 是 Dart 语言中的父类型,用来表示数字类型。它是 int 和 double 的父类型,可以表示整数和浮点数。
下面是一个简单的示例:
num a = 10;
num b = 3.14;
print(a + b);  // 13.14
在上面的代码中,a 被声明为数字类型 num,并赋值为整数 10。b 也被声明为数字类型 num,并赋值为浮点数 3.14。然后,它们两个被相加,结果为 13.14。
因为 num 是 int 和 double 的父类型,所以它可以容纳两种数字类型,并且可以被强制转换为 int 或 double 类型。
num c = 10;
int d = c;
print(d);  // 10
num e = 3.14;
double f = e;
print(f);  // 3.14
在上面的代码中,变量 c 被赋值为整数 10,并强制转换为整数类型 int,赋值给变量 d。同样,变量 e 被赋值为浮点数 3.14,并强制转换为浮点数类型 double,赋值给变量 f。
2.int
int 是 Dart 语言中的整数类型。它用来表示整数,如 0、1、2、3 等。
下面是一个简单的示例:
int a = 10;
int b = 20;
print(a + b);  // 30
在上面的代码中,a 和 b 都被声明为整数类型 int,并分别赋值为 10 和 20。然后,它们两个被相加,结果为 30。
注意:整数类型 int 不能表示小数,如果需要表示小数,则应使用浮点数类型 double。
此外,Dart 中的整数类型 int 支持各种数学运算,如加减乘除、取模等。
下面是一个简单的示例:
int a = 10;
int b = 3;
print(a + b);  // 13
print(a - b);  // 7
print(a * b);  // 30
print(a / b);  // 3
print(a % b);  // 1
在上面的代码中,变量 a 和 b 都被声明为整数类型 int,分别赋值为 10 和 3。然后,它们进行加减乘除和取模等数学运算。
3.double
double 是 Dart 语言中的浮点数类型。它用来表示浮点数,如 3.14、1.23 等。
下面是一个简单的示例:
double a = 10.5;
double b = 20.3;
print(a + b);  // 30.8
在上面的代码中,a 和 b 都被声明为浮点数类型 double,并分别赋值为 10.5 和 20.3。然后,它们两个被相加,结果为 30.8。
注意:浮点数类型 double 的精度有限,不能精确地表示所有小数,而且在一些特殊情况下,可能导致精度问题。
此外,Dart 中的浮点数类型 double 也支持各种数学运算,如加减乘除等。
下面是一个简单的示例:
double a = 10.5;
double b = 3.14;
print(a + b);  // 13.64
print(a - b);  // 7.36
print(a * b);  // 32.93
print(a / b);  // 3.33
在上面的代码中,变量 a 和 b 都被声明为浮点数类型 double,分别赋值为 10.5 和 3.14。然后,它们进行加减乘除等数学运算。
4.String
String 是 Dart 语言中的字符串类型。它用来表示文本字符串,如 “Hello World”、“Dart is Fun” 等。
下面是一个简单的示例:
String name = "John Doe";
print("Hello, " + name);  // Hello, John Doe
在上面的代码中,变量 name 被声明为字符串类型 String,并赋值为 “John Doe”。然后,它和字符串 "Hello, " 进行拼接,结果为 “Hello, John Doe”。
Dart 中的字符串类型 String 支持各种字符串操作,如拼接、切片、搜索、替换等。
下面是一个简单的示例:
String s1 = "Hello";
String s2 = "World";
print(s1 + " " + s2);  // Hello World
print(s1.length);       // 5
print(s2.substring(0, 4));  // Worl
print(s1.replaceAll("l", "x"));  // Hexxo
在上面的代码中,变量 s1 和 s2 都被声明为字符串类型 String,分别赋值为 “Hello” 和 “World”。然后,它们进行拼接、求长度、切片、替换等字符串操作。
5.bool
bool 是 Dart 语言中的布尔类型,用来表示真假两种状态。在 Dart 中,只有两个值可以表示布尔类型:true 和 false。
下面是一个简单的示例:
bool isTrue = true;
bool isFalse = false;
print(isTrue);  // true
print(isFalse); // false
在上面的代码中,变量 isTrue 和 isFalse 都被声明为布尔类型 bool,分别赋值为 true 和 false。
布尔类型主要用来在条件判断语句(if、switch、while 等)中,作为判断条件,决定是否执行特定代码。
下面是一个简单的示例:
bool isTrue = true;
if (isTrue) {
  print("This is true.");  // This is true.
} else {
  print("This is false.");
}
在上面的代码中,变量 isTrue 被声明为布尔类型 bool,并赋值为 true。然后,它作为判断条件,决定执行哪一个分支。如果 isTrue 为 true,则执行第一个分支,并输出 “This is true.”。
6.List
List 是 Dart 语言中的列表类型,也称为数组。它是一种有序的元素集合,可以存储任何类型的数据,包括数字、字符串、布尔值等。
创建一个列表需要使用方括号 [],并在方括号内使用逗号 , 分隔元素。
下面是一个简单的示例:
List<String> names = ["Alice", "Bob", "Charlie"];
print(names);  // [Alice, Bob, Charlie]
在上面的代码中,变量 names 被声明为列表类型 List<String>,表示这是一个字符串元素的列表。然后,列表中的三个字符串元素被分别初始化为 “Alice”、“Bob”、“Charlie”。
列表的元素可以使用下标访问,下标从 0 开始。
下面是一个简单的示例:
List<String> names = ["Alice", "Bob", "Charlie"];
print(names[0]);  // Alice
print(names[1]);  // Bob
print(names[2]);  // Charlie
在上面的代码中,列表 names 中的每一个元素都可以通过下标访问。例如,通过 names[0] 可以访问列表中的第一个元素 “Alice”。
一个列表的元素可以是不同类型的。Dart 是一种动态类型语言,不需要在创建列表时明确指定列表元素的类型。因此,您可以在同一列表中存储多种类型的元素。
List mixedList = [1, "Hello", true];
print(mixedList[0]);  // 1
print(mixedList[1]);  // Hello
print(mixedList[2]);  // true
在上面的代码中,列表 mixedList 中的三个元素分别是整数、字符串和布尔值。它们可以通过下标访问,如上面代码中所示。
7.Map
Map 是 Dart 中一种用于存储键/值对的数据结构。键和值都可以是任何类型的值,键是唯一的。您可以通过键来访问与之对应的值。
这是一个示例:
var student = {
  'name': 'John Doe',
  'age': 30,
  'isGraduate': true
};
print(student['name']);  // John Doe
print(student['age']);  // 30
print(student['isGraduate']);  // true
在上面的代码中,我们创建了一个名为 student 的 Map,并存储了三个键/值对。您可以通过访问字典中的键来访问与之对应的值。
8.Function
Function 是 Dart 中一种代码块的类型,可以作为变量进行赋值、作为参数传递给其他函数、作为返回值返回给调用者。
// 定义一个函数
String greet(String name) {
  return 'Hello, $name!';
}
// 调用函数
print(greet('John Doe'));  // Hello, John Doe!
// 将函数赋值给变量
var greetFunction = greet;
print(greetFunction('Jane Doe'));  // Hello, Jane Doe!
// 作为参数传递给其他函数
void printGreeting(String name, String Function(String) greet) {
  print(greet(name));
}
printGreeting('John Doe', greet);  // Hello, John Doe!
在上面的代码中,我们定义了一个名为 greet 的函数,该函数接受一个字符串类型的参数 name,并返回一个字符串类型的值。我们还将该函数赋值给了变量 greetFunction,并使用它作为参数传递给了另一个函数 printGreeting。
三、总结
这次我们学习了Dart的内建类型,这些类型在我们的代码中是会被经常用到。


![[软件工程导论(第六版)]第5章 总体设计(课后习题详解)](https://img-blog.csdnimg.cn/1e5ebc71f4494784af26ba71e670d161.png)
















