1 Dart简介
Dart是一种开源的通用编程语言。它最初由Google开发用来代替前端的JS,后来随着JS的迅猛发展,Dart的位置就很尴尬,也变得不温不火。直到Flutter的出现再一次拯救Dart。作为当下最火的跨平台框架,Flutter天生支持Dart(毕竟还是自家的产品),Dart的身价也就水涨船高,它与JS有很多类似的地方,但是也有一些独有的特色,就让我们跟随这一系列的文章走进Dart的世界。
2 变量声明
var
类似于JavaScript,Dart也使用 var 来声明变量,但是Dart中变量一经赋值类型就确定了,不能再改变类型,否则回报错。
var a = 1;
a = "123"; // 编译器会警告
final 和 const
Dart 中final和const的用法与其他语言的用法并没有什么不同, final表示变量只能被赋值一次,赋值之后不可更改,否则会报错。const表示一个编译期常量。被final或const修饰的变量类型可省略。
final a = 1; //final int a = 1
const b = "abc"; //final String b = "abc"
dynamic 和Object
Object是所有对象的根基类,所有类型都是Object的子类,所以所有变量都可以声明为Object。dynamic声明的变量也可以赋值任意的对象,从这一点上看,Object和dynamic与var类似,不同的是object和dynamic声明的变量赋值过后类型可以更改。
dynamic a = 1;
a = "123";
print(a); //没有报错,输出123
Object b = 2;
b = "abc";
print(b); //没有报错,输出abc
Object与dynamic的区别是Object只能使用Object的方法,dynamic声明的对象编译器会提供所有的可能。
dynamic a = 1;
a = "123";
print(a.length); //输出3
Object b = 2;
b = "abc";
print(b.length); //报错 : Error: The getter 'length' isn't defined for the class 'Object'.
3 基本数据类型
Dart 常用的数据类型有五种,分别是 Number,String,Boolean,List和Map。
Number
Number包含两种数据类型,int表示整型,double表示浮点型。声明时整型可以自动转型为浮点型,浮点型不能自动转化为整型。
double a = 1; //没有问题
int b = 1.1; //会报错
- 常用属性和方法
属性 | 描述 |
---|---|
isOdd | 判断是否是奇数 |
isEvent | 判断是否是偶数 |
isNaN | 判断是否是数字 |
abs() | 取绝对值 |
ceil() | 返回不大于它最大的整数 |
floor() | 返回不小于它最小的整数 |
toString() | 转化为字符串 |
round() | 最接近的整数 |
remainder() | 除去之后的余数 |
int a = 1;
int b = -1;
double c = 1.4;
print(a.isEven); \\false
print(a.isNaN); \\false
print(a.isOdd); \\true
print(a.toString()); \\1
print(c.floor()); \\ 2
print(c.round()); \\1
print(c.ceil()); \\1
print(b.abs()); \\1
print(a.remainder(2)); \\1
String
Dart中的字符串值可以使用 单引号 或 双引号 或 三引号 表示。单行字符串使用单引号或双引号表示。三引号用于表示多行字符串。Dart可以使用+来连接字符串,也支持${}的插值表达式。
String a = "hello";
String b = "world";
print(a + " " + b); \\ 输出hello world
int c = 1;
print("This is ${c}"); \\ 输出 This is 1
- 常用的方法和性质
属性 | 描述 |
---|---|
isEmpty | 判断是否为空 |
length | 长度 |
subString() | 截取子串 |
toLowerCase() | 字母全小写 |
toUpperCase() | 字符全大写 |
split() | 将字符串划分为列表 |
indexOf() | 返回字符的位置 |
startWith() | 判断字符串开头 |
replaceAll() | 替换字符串 |
contains() | 判断是否包含子串 |
String a = "Hello";
String b = "a b c d";
print(a.isEmpty); \\false
print(a.length); \\5
print(a.substring(2)); \\llo
print(a.toLowerCase()); \\hello
print(a.toUpperCase()); \\HELLO
print(b.split(" ")); [a, b, c, d]
print(a.indexOf("o")); \\4
print(a.startsWith("H")); \\true
print(a.replaceAll("l", "o")); \\heooo
print(a.contains("ll")); \\true
Boolean
Dart Boolean类型只有两个值true和false。
List
Dart 中的List类似于其他语言中的数组,是有序的对象的集合。既可以声明固定长度的List,也可以声明不定长度的List。
List list1 = new List(3); //声明定长的List
List list2 = new List(); //声明不定长的List
//List初始化
list1[0] = 0;
list1[1] = 1;
list1[2] = 2;
print(list1); 输出[0, 1, 2]
- List常用属性和方法
属性 | 描述 |
---|---|
length | List的长度 |
first | List第一个元素 |
last | List最后一个元素 |
reversed | 将List翻转 |
isEmpty | 判断List是否为空 |
asMap | 将List转化为Map |
add | 向List添加元素 |
clear | 清空List |
remove | 移除元素 |
List list1 = new List(3); //声明定长的List
List list2 = new List(); //声明不定长的List
//List初始化
list1[0] = 0;
list1[1] = 1;
list1[2] = 2;
print(list1.length); //3
print(list1.first); //0
print(list1.last); //2
print(list1.reversed); //[2, 1, 0]
print(list1.isEmpty); //false
Map map = list1.asMap();
print(map); //{0 : 0, 1 : 1, 2 : 2}
list2.add(1);
print(list2); //[1]
list2.clear();
print(list2); //[]
Map
Map对象是一个简单的键/值对。Map中的键和值可以是任何类型。Map是动态集合。换句话说,Map可以在运行时增长和缩小Map对象是一个简单的键/值对。Map可以通过字面量声明,也可以通过构造函数声明。
Map map = {"name" : "Joe", "sex" : "male"}; //通过字面量声明
Map map1 = new Map(); //通过构造函数声明
- Map常用的属性和方法
属性 | 描述 |
---|---|
length | Map的长度 |
keys | 返回key的列表 |
values | 返回value的列表 |
containsKey | 判断是否包含key |
containsValues | 判断是否包含value |
isEmpty | 判断是否为空 |
remove | 移除一个元素 |
Map map = {"name" : "Joe", "sex" : "male"}; //通过字面量声明
Map map1 = new Map(); //通过构造函数声明
print(map.length); \\2
print(map.keys); \\ ["name", "sex"]
print(map.values); \\["Joe", "male"]
print(map.containsKey("name")); \\true
print(map.containsValues("John")); \\false
print(map.isEmpty); \\false
print(map.remove("name")); \\ "Joe"
最后
今天我们主要简单介绍了Dart的变量声明以及简单的数据类型,虽然很简单,但是大家还是可以动手亲自写一遍。纸上得来终觉浅, 觉知此事要躬行。如何大家觉得不错,点赞是最大的支持更多文章大家可以关注微信公众号QStack,追寻最纯粹的技术,享受编程的快乐。