Dart语言【003】变量与类型

定义变量

Dart定义变量的格式为:

类型 变量名 = 值;

例如:

int n = 4;

也可以不指定变量的类型,用var来定义变量:

var 变量名 = 值;

例如:

var s = "一个字符串";

如果一个变量在定义之后没有被赋过值,那么它无值(null)。

int a;
String s;
assert(a == null);
assert(s == null);

上述的a和s的值都是null,两个断言都会成立。


基本类型

Dart的基本类型有:

  1. 布尔(bool);

  2. 数(num),数又分为整数(int)和浮点数(double);

  3. 字符串(String);

  4. 列表(List)

  5. 字典(Map)

  6. 枚举(enum)

其中,List和Map都是泛型(以后介绍)。

bool只有两个值:true和false。bool和其他语言的布尔没什么太大分别,都是用于逻辑判断的。

整数不分有符号和无符号,只有int;浮点数也不像C语言中分为float和double,只有double。

字符串可以用单引号或双引号引起来。

bool b1 = true;
bool b2 = false;
int n = 35;
double x = 34.908;
num m1 = 78;
num m2 = 7.23;
String s1 = "数学分析与高等代数";
String s2 = 'Cats and Dogs';
String s3 = "如果用双引号表示字符串,那么字符串中的'单'引'号'可以不用转义符";
String s4 = '如果用单引号表示字符串,那么字符串中的"双"引"号"可以不用转义符';

列表的定义方式为:

List<T> = [t_1, t_2, ..., t_n];

其中T为列表元素的类型。例如:

List<int> A = [1, 2, 3, 4]; // 一个int列表
List<String> B = ["微分几何", "代数拓扑", "实变函数"]; // 一个String列表

字典类型的定义方式,类似于下面这样:

Map<int, String> m = {
  1: "流形",
  4: "偏微分方程",
};
assert(m[1] == "流形");
assert(m[4] == "偏微分方程");

枚举的用法类似于下面这样:

enum Color { Red, Black, Green }
enum Animal { Cat, Dog, Sheep }

void main() {
  Color c = Color.Black;
  Animal a = Animal.Cat;

  if (c == Color.Black && a == Animal.Cat) {
    print("黑猫");
  } else {
    print("不是黑猫");
  }
}


传统的面向对象方式

与JavaScript不同,Dart的面向对象方式更像C#、Java那种传统的面向对象语言。Dart定义类用class关键字,例如:

void main() {
  Person p = new Person(20, "华盛顿");
  p.Display(); // 我叫华盛顿,今天20岁
}

class Person {
  int age;
  String name;
  Person(int age, String name) {
    this.age = age;
    this.name = name;
  }
  void Display() {
    String s = "我叫${this.name},今天${this.age}岁";
    print(s);
  }
}

在后面的章节中,我会详细地介绍类和对象(包括this关键字,命名构造函数,静态成员函数,继承,多态等等)。


一切都是类,一切都是对象

在Dart中所有的类型都是class,包括bool、num、int、double。

所有的类型都(直接或间接地)继承于Object。int和double都是num的直接派生类。

按照一般的面向对象语言中的“可用派生类的对象给基类类型的变量赋值”法则,我们可以写出以下代码:

int n = 5;
double a = 4.31;
num m1 = n;
num m2 = a;

转载于:https://my.oschina.net/jthmath/blog/417434

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值