在Dart语言中万物皆对象,下面我们学习下Dart语言的变量定义和基本的数据类型。
1.注释
单行注释
// 单行注释
多行注释
/*
多行注释
*/
2.变量
2.1.变量定义
通过var定义并初始化变量
var name = 'Bob';
Dart语言是强类型语言,但是这里我们没有指定变量类型,Dart是通过首次初始化值推断变量的类型,这里变量name就是String类型。
注意:虽然我们定义变量的时候没有指定数据类型,但是如果一个变量已经初始化为一种数据类型,就不能将其他类型的数据赋值给它。
// 这里错误的,因为name的类型为string, 不能将int类型数据赋值给name
name = 100;
我们也可以在定义变量的同时指定数据类型
// 直接定义string变量,并初始化
String name = 'Bob';
2.2. 变量默认值
未初始化的变量,值都是null
int lineCount;
这里尽管lineCount是int类型,但是Dart语言中所有变量都是对象类型,所以初始值依然是null, 而不是0,这个大家要注意下,跟其他语言有区别。
2.3. Final 和 const
如果不希望变量被修改,可以使用final和const定义变量。
final name = 'Bob'; // 未指定数据类型方式
final String nickname = 'Bobby'; // 指定数据类型方式
这两个变量值都无法修改。
使用const定义常量
const bar = 1000000;
final和const的区别就是在编译的时候const变量的值就是已经确定的,final不一定,可能需要运行的时候才能确定值。
例子:
// 将x变量的值,初始化为当前时间
final x = new DateTime.now();
final定义的变量只能被初始化一次,但是这里变量x的值只有在运行的时候才能确定值。
3.数字类型
在dart语言中数字类型主要有下面三种:
- int - 整数类型
- double - 浮点数类型
- num - 数字类型,int和double都是它的子类
例子:
var x = 1; // 初始化为int类型
var y = 1.1; // 包含小数,初始化为double
// 明确指定数据类型
double z = 1;
num d = 100;
3.1. 数字类型和字符串类型互相转换
// 将String类型转换成int类型
var one = int.parse('1');
// 将String类型转换成double类型
var onePointOne = double.parse('1.1');
// 将int类型转换成String类型
String oneAsString = 1.toString();
// 将double类型转换成String类型, 保留两位小数
String piAsString = 3.14159.toStringAsFixed(2);
4.字符串类型
字符串类型使用单引号或者双引号包裹字符串都可以。
var s1 = 'www.tizi365.com';
var s2 = "欢迎访问梯子教程网!";
4.1.字符串内嵌表达式
Dart语言支持在字符串中内嵌变量,或者干脆内嵌表达式。
例子:
// 内嵌变量
var s3 = "欢迎访问: $s1";
// 内嵌表达式
var s4 = "网址大写形式:${s1.toUpperCase()}";
输出:
欢迎访问: www.tizi365.com
网址大写形式:WWW.TIZI365.COM
字符串内嵌表达式语法:${expression} , 如果单纯内嵌一个变量,可以忽略花括号。
4.2.字符串相加(连接)
字符串相加,就是将两个字符串连接起来,dart语言中有以下三种方式实现字符串连接。
连续的字面字符串定义,默认会将字符串连接起来。
var s1 = "字符串1" "字符串2"
"字符串3";
print(s1);
输出:
字符串1字符串2字符串3
使用 + 加号连接字符串
var s2 = 'The + operator ' + 'works, as well.';
print(s2);
输出:
The + operator works, as well.
4.3.多行字符串定义
使用 ''' 定义多行字符串, 这种方式可以保留字符串的换行符
var s1 = '''
这是第一行字符串。
这是第二行字符串。
''';
print(s1);
输出:
这是第一行字符串。
这是第二行字符串。
5.boolean
布尔类型,就两种值true或者false, 分别表示真和假。
var isOk = false;
bool status = true;
6.enum枚举类型
枚举类型其实就是一组常量的集合,都是只读的。
定义枚举类型例子:
// 使用enum关键字,定义Color枚举类型,Color包含了3个常量red、green、blue
enum Color { red, green, blue }
使用枚举类型例子:
// 读取Color.blue枚举常量
var aColor = Color.blue;
// 使用switch语句判断aColor变量值
switch (aColor) {
case Color.red: // 使用枚举常量作为检测条件,aColor == Color.red 则成立。
print('Red as roses!');
break;
case Color.green:
print('Green as grass!');
break;
default: // 默认条件
print(aColor); // 'Color.blue'
}
枚举常量都有一个从0开始数字编号,第一个常量是0,第二个是1,以此类推。
可以通过枚举常量的index属性读取这个编号。
var index = Color.blue.index; // 等于 2