由于本人做的是Android开发,用的是Java语言,故此接下来我会在Java和dart两种语言做个对比,在熟悉的代码中学习新的语言。学习dart语言使我想起刚学习Java的时候,基本是按照基本语法、数据类型、属性、函数、操作符和流程控制语句、接口和反射、IO文件操作,接下来我们在学习dart语言时同样按照这样的顺序。
1、基本语法
首先我们来看项目中
dart语言项目
Java项目
从以上可以看出,基本的项目结构类似。但是dart项目比Java要多几个系统文件;最根本的区别还是相关类文件的后缀是不一样的。很多的不同在以下介绍;
2、dart语言中的数据类型
在学习Java时有8中基本数据类型如byte、short、int、boolean、float、double、chart;dart语言中支持的数据类型有Numbers、Strings、List、Booleans、Maps。接下来我们就来看看dart数据类型的使用:
1)、数字类型和boolean类型
print('Hello, World!');
//数字的使用
var number = 45;
print(number);
printNumber(56);
2)、类似于Java中boolean类型的使用
var t=true;
print(t);
final booleans isshow=false;
print(isshow);
printNumber(number number) {
print('the number is $number');
}
运行结果如下:
dart中数字和boolean类型的使用
3)、dart中字符串的使用
/*Dart 语言本质上是动态类型语言,类型是可选的
可以使用 var 声明变量,也可以使用类型来声明变量
一个变量也可以被赋予不同类型的对象
但大多数情况,我们不会去改变一个变量的类型
字符串赋值的时候,可以使用单引号,也可以使用双引号
Dart 语言本质上是动态类型语言,类型是可选的
可以使用 var 声明变量,也可以使用类型来声明变量
一个变量也可以被赋予不同类型的对象
但大多数情况,我们不会去改变一个变量的类型*/
String name ='杨烁';
print(name);
String name2 ="欧阳";
print(name2);
//如果使用的是双引号,可以内嵌单引号
//当然,如果使用的是单引号,可以内嵌双引号,否则需要“\”转义
var content="it's dart ";
var contetn1='it\'s dart';
print("content:="+content+"contetn1:="+contetn1);
// 使用三个单引号或者双引号可以多行字符串赋值
String str="""dart is my enjoy
realy enjoy""";
String str2='''this is string demo''';
print("con:="+str+"str2:=="+str2);
运行结果如下:
字符串在使用中出现一个问题就是如果多个字符串相邻,中间的字符串不能为空,否则报错
var name ='Wang''''Jianfei'; 报错
在编辑器中是不通过的报错如下:
4)、dart语言中List(列表)、Map(映射)、Set(集)三种集合类型
- dart语言中list集合的使用---固定长度的写法,一旦确定无法改变list的长度
-
List<int> lists = new List(5); lists[0] = 3; //这中写法有点像java数组赋值的写法 print(lists); print(lists[0]);
- 改变长度的写法List<String> names = new List<String>();或者List<int> lists2 = [1, 2];这两种写法都是可以的
-
第三种创建在一定范围内可以改变长度的列表List changeList = new List()..length = 20;
- 其他不同情况下的灵活使用
List fixList = new List.unmodifiable([2, 4, 7]); print(fixList); // 创建包含所有元素的可改变长度列表 List changeList2 = new List.from([7, 9, 4]); print(changeList2.length); // 为所有元素统一赋值,第二个参数代表list集合中的填充元素 List fillList = new List.filled(4, 0); print(fillList); List fillList2 = new List.filled(3, [0, 3, 5]); print(fillList2); //显示元素的值便是index*index List generList = new List<int>.generate(6, (int index) { return index * index; });
- dart语言中list集合相关属性的使用
print(generList.first); //获取list集合的首个元素 print(generList.last); //获取list集合的最后一个元素 print(generList.reversed); //获取list集合元素反转后的集合 print(generList.hashCode); //获取list集合的哈希码 print(generList.isEmpty); //判断list集合是否为null print(generList.isNotEmpty); //判断list集合是否为null的第二个属性 print(generList .iterator); //返回一个新的迭代器,但是如果实例化不是ListIterator<int>会给出Instance of 'ListIterator<int>'的提示 print(generList.runtimeType); //返回list集合运行时的类型 // print(generList.single);//判断list集合是否只有一个元素,否则就会报错 // print(generList.removeLast()); //去除list集合的最后一个元素 // print(generList); print(generList.insert(4, 34)); //给list集合的指定位置添加某一元素,位置必须在list元素的位置内 print(generList.asMap()); //将list集合转换成smap集合 print(generList); print(generList.toSet()); //江苏list集合转换成set集合 print(generList); // print(generList.getRange(2, 6));//获取list集合中某一范围内的新集合 //print(generList.removeRange(3, 4));//删除list集合中某一范围内的数据 print(generList.replaceRange(1, 3, [9, 45, 256])); //替换某一范围的元素 print(generList); List<int> newNums = [1, 3, 2, 5, 6, 7, 8, 9]; // dart语言中函数的简易写法 newNums.removeWhere((item)=>item%3==0); newNums.retainWhere((item) => item % 2 == 0); //一处集合中不满足集合条件的元素 print(newNums); // print(generList.clear());//删除list集合中的元素 //按顺序迭代列表 newNums.forEach((item) { print(item); }); generList.sort(); //对list集合按顺序排序 print(generList); generList.shuffle(); //对list集合随机排序 print(generList); 以上是dart语言list集合的简单使用,更多用法可以自查源码
- dart语言中map的使用和相关的属性
Map<String, String> maps = {"name": "杨建", "age": "24", "gender": "女"}; List<int> numLists = [45, 89, 124]; //以下用到速写语法 Map<String, int> numMaps = new Map.fromIterable(numLists, key: (item) => item.toString(), value: (item) => item * item); print(numLists); print(numMaps); print(numMaps['89'] + numMaps['45']); print(numMaps['45'] - numMaps['124']); List<String> keys = ['a', 'b', 'c', 'd']; List<String> values = ['asd', '345', 'dfdf', 'flgk']; Map<String, String> mapContents = new Map.fromIterables(keys, values); print(mapContents); print(mapContents['a'] + mapContents['c']); //dart中map集合涉及到的相关属性如下 Map<String, String> studentInfo = {'name': '杨毅', 'age': '15', 'gender': '女'}; print(studentInfo.keys); //返回map集合中所有的key值 print(studentInfo.values); //返回map集合中所有的value值 print(studentInfo.isEmpty); //也可以使用isNotEmpty判断是否为null print(studentInfo.containsKey("age")); print(studentInfo.hashCode); print(studentInfo.runtimeType); print(studentInfo.hashCode); print(studentInfo.toString()); studentInfo.forEach((key, value) { print(key + ";" + value.toUpperCase()); }); Map<String, int> scores = {'B': 36}; for (var key in ['B', 'r', 't']) { // 查找指定键,如果不存在就添加 scores.putIfAbsent(key, () => key.length); } print(scores);
- dart语言中set的属性和使用和list和map是有很多相似的地方的,以下简单列举
//set集合的对象只能出现一次,不能重复 Set nameSets = new Set.from(['欧阳', '杨素', '绮丽']); nameSets.add('王继英'); print(nameSets); print(nameSets.first); print(nameSets.last); // print(nameSets.single);//如果是单独一个元素,则返回,否则就报错 print(nameSets.addAll(['欧阳鱼翅','上官家族'])); print(nameSets); 以上以供参考