Dart是一种开源的通用编程语言。它最初由Google开发用来代替前端的JS,后来随着JS的迅猛发展,Dart的位置就很尴尬,也变得不温不火。直到Flutter的出现再一次拯救Dart。作为当下最火的跨平台框架,Flutter天生支持Dart(毕竟还是自家的产品),Dart的身价也就水涨船高,它与JS有很多类似的地方,但是也有一些独有的特色,就让我们跟随这一系列的文章走进Dart的世界。
类似于JavaScript,Dart也使用 var 来声明变量,但是Dart中变量一经赋值类型就确定了,不能再改变类型,否则回报错。
var a = 1; a = "123"; // 编译器会警告Dart 中final和const的用法与其他语言的用法并没有什么不同, final表示变量只能被赋值一次,赋值之后不可更改,否则会报错。const表示一个编译期常量。被final或const修饰的变量类型可省略。
final a = 1; //final int a = 1 const b = "abc"; //final String b = "abc"Object是所有对象的根基类,所有类型都是Object的子类,所以所有变量都可以声明为Object。dynamic声明的变量也可以赋值任意的对象,从这一点上看,Object和dynamic与var类似,不同的是object和dynamic声明的变量赋值过后类型可以更改。
dynamic a = 1; a = "123"; print(a); //没有报错,输出123 Object b = 2; b = "abc"; print(b); //没有报错,输出abcObject与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'.Dart 常用的数据类型有五种,分别是 Number,String,Boolean,List和Map。
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)); \\1Dart中的字符串值可以使用 单引号 或 双引号 或 三引号 表示。单行字符串使用单引号或双引号表示。三引号用于表示多行字符串。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")); \\trueDart Boolean类型只有两个值true和false。
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常用属性和方法 属性描述lengthList的长度firstList第一个元素lastList最后一个元素reversed将List翻转isEmpty判断List是否为空asMap将List转化为Mapadd向List添加元素clear清空Listremove移除元素 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 = {"name" : "Joe", "sex" : "male"}; //通过字面量声明 Map map1 = new Map(); //通过构造函数声明 Map常用的属性和方法 属性描述lengthMap的长度keys返回key的列表values返回value的列表containsKey判断是否包含keycontainsValues判断是否包含valueisEmpty判断是否为空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,追寻最纯粹的技术,享受编程的快乐。