01 Dart语言初探、Dart语言数据类型
Author : ScorpioDong
1. Dart 语言介绍
Dart 是谷歌开发的计算机编程语言,由 Ecma 认定为标准。Dart 是一门全端开发语言,被用于 web、服务器、移动应用和物联网等领域的开发。Dart 是修改 BSD 证书的开源软件。
Dart 是一门面向对象编程语言,编程风格类似 C 语言语法,它支持各种编程辅助工具,如:接口,类,集合,泛型和可选类型。
在类型系统上,Dart 是一门动态类型语言,它支持 var 类型推断、指定类型定义和 dynamic 动态类型定义。在面向对象方面,Dart 支持单继承,多接口。Dart 支持并发、隔离和异步机制。
Dart 可以编译为 JavaScript 语言代码。
2. 环境配置
首先就是安装 DartSDK,DartSDK 可以从此处下载,不过网站在国外,你们懂得。
另外一种方法,Windows 用户从此Github仓库下载安装包,Linux 用户尝试使用包管理器安装,Mac OS 用户使用 Homebrew 的 cask 源安装。
编辑器推荐使用 VSCode,安装 Dart 插件(推荐安装 Code Runner,自动执行),也可以使用 Idea 或者 Android Studio。
DartPad是 Dart 语言的网络开发环境,可以体验 Dart 语言的大部分功能,足够入门学习使用。
3. Hello World
Dart 文件名命名应该以.dart 结尾,文件名使用英文小写加下划线的命名方式!
新建文件,命名 hello_world.dart
,输入如下代码:
main() {
print("Hello Dart!");
}
main()方法是 Dart 语言预定义的方法,此方法作为程序的入口方法。print()方法能够将字符串输出到标准输出流上(终端)。
Dart语言中的语句以分号结尾。Dart语言忽略程序中出现的空格,制表符和换行符。可以在程序中自由使用空格,制表符和换行符,并且可以自由地以简洁一致的方式格式化和缩进程序,使代码易于阅读和理解。
上述代码的输出应该是:
Hello Dart!
执行 Dart 程序
- 如果是在 VSCode 中,并且安装了 Code Runner 插件,配置好了 DartSDK,那么可以直接点击 VSCode 右上角的运行按钮执行。
- 终端执行:终端中输入
dart hello_world.dart
dart 命令
命令行选项 | 描述 |
---|---|
-c 或 --c | 开启断言和类型检查 |
--packages <path> | 指定程序包解析配置文件的路径 |
-p <path> | 指定在何处查找导入的库。此选项不能与--packages 一起使用 |
-h 或 --help | 显示帮助信息 |
建议在开发和测试期间开启断言和类型检查,有助于代码的开发和调试。但是,为了在运行脚本时确保性能优势,建议Release版本关闭断言和类型检查
3. Dart 语言注释
Dart语言支持单行注释(//),多行注释(/* /)和文档注释(C#风格:/// 或者JavaDoc风格/* */)
4. Dart 语言标识符
标识符是程序中元素的名称,如变量,函数等。
和其他语言一样,Dart语言的标识符有以下特点:
- 标识符可以包括字符和数字。但是,标识符不能以数字开头。
- 除下划线(_)或美元符号($)外,标识符不能包含特殊符号。
- 标识符不能是关键字。
- 标识符区分大小写。
- 标识符不能包含空格。
Dart语言并没有给出具体的标识符命名规范,但这里给出一些建议:
- 变量名、方法、参数名都应该是小写开头的驼峰命名法
- 类, 枚举, 类型定义, 以及泛型,使用大写开头的驼峰命名法
- 命名库、包、目录、dart文件都应该是小写加上下划线
- import引用库使用as转换的名字也应该是小写下划线
5. Dart 语言数据类型
Dart是一门强类型编程语言,但是可以使用var进行变量类型推断。如果要明确说明不需要任何类型, 需要使用特殊类型dynamic。
dynamic修饰定义的变量可以赋值任何语言,在运行中也可以随时赋值任何类型的变量值。
5.1 数字
Dart语言中的数字类型用来表达数学中数字的概念,数字类型有两种类型
- int : 整数数据类型,Dart语言只有一种整数数据类型
int
类型。 - double :浮点数类型,Dart语言浮点数只有一种双精度
double
类型。
int x = 10;
int y = 0xFFEEAA;
double z = 0.1;
var m = 5;
var关键字可以在运行时自动判断变量值并赋予变量数据类型,但和dynamic修饰定义的变量不同的是,var修饰定义的变量赋予类型后其类型已经确定,不能再赋值其他类型的变量值。
5.2 字符串
字符串代表了一系列的字符。Dart字符串是一系列UTF-16代码单元。符文用于表示UTF-32代码单元序列。Dart中的字符串变量使用String
修饰定义。单引号或双引号包裹的字符组合表示字符串字面量。
String a = "Hello";
String b = 'Dart';
var c = "Hello Dart";
5.3 布尔类型
要表示布尔值,可使用Dart中的bool
类型。布尔类型只有两个值:true和false,它们都是编译时常量。
bool d = false;
bool e = true;
var f = 10 > 15; // f = false
5.4 列表类型
Dart语言中的数组被称作列表(List对象)。Dart语言中的列表类型定义如下:
List<int> list = [1,2];
List<String> list2 = ['hello','dart'];
var list3 = [3,4];
list3[0] = 8;
List<int> list4 = new List(); // 未初始化,不定长列表
List<int> list5 = new List(5); // 未初始化,定长列表
list4.add(7); // 向列表添加元素
list5[0] = 1; // 赋值列表的0号元素为1
print(list3[0]); // 打印数字8
- Dart语言中的列表是有序的,像是其他强类型编程语言中的有序集合,列表的类型定义使用到了泛型。
- 列表元素通过中括号加下标的方式选取使用。
- 未初始化的列表使用new关键字加list方法创建,list方法可以指定列表长度。
- 未初始化但指定了长度的定长列表默认元素为null,使用[index]的方式赋值元素。
- 未初始化也未指定长度的不定长列表使用add(object)方法添加元素。
5.5 集合类型
Dart语言中的集合是指无序集合(Set),集合的创建:
Set<String> set = <String>{};
var set1 = <String>{};
Set<String> set2 = {};
var set3 = {'hello','dart','world'}; // 使用初始化列表进行初始化
- 要创建一个空集合,请使用前面带有类型参数的{},或者将{}赋给类型为Set的变量。
- 可以使用初始化列表加{}进行集合的初始化。
- 使用add()或addAll()方法添加元素。
- 使用length()获取集合中元素的个数。
5.6 映射类型
Dart语言中的映射类型相当于Python中的字典类型,其中的元素都是以键值对形式存在的,映射的创建:
var map1 = {1:'a',2:'b'};
var map2 = Map();
Map<String, int> map = {};
- 映射中的元素都是以键值对存在的,【键不可重复】
- 可以使用初始化列表初始化映射
- 可以是有Map()构造方法进行初始话
- 可以指定类型进行初始化,需要在泛型中明确指定键类型和值类型
5.7 符文类型
在Dart中,符文是字符串的UTF-32代码点。
5.8 符号类型
Symbol对象表示Dart程序中声明的运算符或标识符。
Tips
符文和符号类型在日常使用中并不常用,会在以后使用到的时候再详细说明。
列表和集合也会在以后详细讲解其使用方法。
本文参考了易百教程的Dart语言教程 https://www.yiibai.com/dart