一架梯子,一头程序猿,仰望星空!

Dart语言变量和基本数据类型


在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