Dart语言入门
创始人
2024-04-13 04:11:29

一、数据类型

基本数据类型

  • int
  • double
  • String 字符串类型,用单引号或者双引号都可以。
  • bool 布尔类型,需要注意的是dart不同于c语言可以再if语句中用int型代替bool类型。
    列表
  • List 列表支持随机访问,类似于java的数组
  //直接定义var list =[];//用泛型显示声明一个集合List list=[1,2,3,4,5];list.add(7);print(list[2]);//创建一个固定长度的集合List lsit=List.filled(2,"");//List当中的常见方法List list = ['苹果','桃子','猴子'];print(list.length); //输出长度print(list.reversed); //反转数组print(list.isEmpty); //判断是否为空print(list.isEmpty); //判断是否为空list.add("西瓜");//添加元素//list.addAll(新数组);//合并数组list.indexOf('西瓜');//查找某个元素list.remove('西瓜');//删除某个元素  传入具体值list.removeAt(2);//删除某个元素  传入下标list.fillRange(0, 1,'aaa');//修改元素 前闭后开list.insert(0, '你好');//插入元素,参数为下标和对象list.join(',');//把List转为字符串,并且用,链接
  • Set Set集合当中的元素是不重复并且无序的,不支持随机访问,具有更好的查找性能。
  //用泛型显示声明一个集合Set set={'dart','flutter'};set.add("value");print((set.length==3));//如果用var声明一个空集合,那我们必须显示的声明泛型var set = {}; //或者Set set={};
  • Map 类似于java。这里的Map也是一个键值对结构,键和值用冒号隔开,如果用var声明一个空Map那么会吧{}推导为默认类型,如果想要声明一个Set,那必须在前面加上泛型。
  //map直接赋值 Map map={'dart':'flutter','map':'映射'};//声明为空的mapvar map={};//先初始化再赋值Map map1 = Map();map1['你好']='ligou';//如果没有定义泛型的话可以这样定义 map1['好']=['我是1','我是2'];print(map1['你好']);//Map常用属性和方法Map map = {'你好':'李哥'};map.keys;//输出所有的keymap.values;//输出所有的valuesmap.isEmpty;//判断是否为空//map.addAll(map名称)//拼接字典map.containsKey('你好');//是否存在某个kmap.remove('你好');//删除某个kmap['哈哈']='呵呵';//添加元素
  • is 关键字来判断类型
  var a = 123;if(a is int){print('yes');}

二、逻辑控制

1.if语句

  • 和java没有什么区别
  if(a>b){print(a);}else{print(b);}

2.for语句

  • 第一种写法和java的for循环一样
  //入门级别用法for(int i = 0; i <5;i++){print(i); //1 2 3 4 5}//集合套mapList list = [{'title':'董瑞龙'},{'title':'李狗'},{'title':'马狗'},];for(int i = 0; iprint(list[i]['title']);   //董瑞龙  李狗  马狗}//类似二维数组的嵌套List list2 =[{'creat':'国内','news':[{'title':'中国第一线'},{'title':'中国第二线'}]},{'creat':'国外','news':[{'title':'国外第一线'},{'title':'国外第二线'}]}];for(int i = 0 ;i//print(list2[i]['creat']);for(int j = 0;jprint(list2[i]['news'][j]['title']);  //中国第一线 中国第二线  国外第一线 国外第二线}}
  • 第二种写法和js当中的for in类似
  List list = [1,2,3,4,5];for(int a in list){print(a); // 1 2 3 4 5}

3.while语句

  • 用法和java类似
  int a = 5;while(a>0){print(a); // 5 4 3 2 1 a--; }
  • 用一下continue和break。
  List list = [1,2,3,4,5];for(int a  in list){if(a<2){continue;}if(a==4){break;}print(a); // 2 3}

4.其他循环控制语句

  • forEach
  List list=['你好','哈哈'];list.forEach((value) {print(value); //你好 哈哈});
  • map
  List list=[1,2];var newlist=list.map((value) {return value*2;});print(newlist.toList()); //[2,4]
  • where
  //输出满足条件的语句List list=[1,2,5,9,7];var newlist=list.where((element) => element>2);print(newlist.toList());//[5,9,7]
  • any
  // 判断是否有满足条件的值,返回值为布尔类型List list=[1,2,5,9,7];var newlist=list.any((element) => element>2);print(newlist); //true
  • every
  // 集合内的元素是否都满足条件,返回值为布尔类型List list=[1,2,5,9,7];var newlist=list.any((element) => element>2);print(newlist); //false

三、方法

  • 普通函数就不多做讲解了,和java一样的。下面介绍几种java当中没有的函数
  • 定义一个带可选参数的方法
//这里定义了一个可选参数的函数,中括号当中的参数是可选的
void main(){print(userInfo('董瑞龙',20,'女')); 
}
String userInfo(String name,[var age,var sex]){if(age!=null) {return "年龄:$age ---性别:$sex";}return " 年龄:$age";
}
  • 定义一个带默认参数的方法
//这里直接在参数后面加上等于号赋值就可以创建一个带有默认参数的方法。
void main(){print(userInfo('董瑞龙',20));
}
String userInfo(String name,[var age,var sex="女"]){if(age!=null) {return "年龄:$age ---性别:$sex";}return " 年龄:$age";
}

四、面向对象编程

1.类和对象

  • Dart类的创建和使用与Java是非常相似的,写个例子就不多做介绍了。
//创建了一个people类
class Peopel{String name = '张三';int age = 10 ;String getInfo(){return 'name=${this.name} -- age=${this.age}';}
}void main(){Peopel p = new Peopel();print(p.name);print(p.getInfo());
}
  • 继承(和java一样,关键字为extends)
class Animal{void walk(){print("正在走");}
}
class Cat extends Animal{@overridevoid walk(){super.walk();print("cat is running");}
}
  • 抽象类(抽象类需要用abstract来声明,当子类继承抽象类之后必须重写抽象类当中的所有抽象方法)
abstract class Animal{void walk(){}
}
class Cat extends Animal{@overridevoid walk(){super.walk();print("cat is running");}
}
  • 接口 Dart的接口和Java是有一定区别的,首先在定义上Dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现。实现的关键字都是implement。

五、一些新特性

  • ?可空类型
  //首先来看下这段代码,这段代码是会报The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable.错误的int a =10;a=null;//如果加入?符号就表示可以为空,这样就不会报错了int ?a =10;a=null;
  • ! 类型断言
  String ?str="da";str=null;print(str!.length);
`**加粗样式**``

相关内容

热门资讯

南开大学专业排名最新或2023... 南开大学专业排名最新或2023(历届)招生优势专业南开大学各专业排名是多少? 南开大学的各类专业排名...
最新或2023(历届)六一儿童... 六一儿童节的作文怎样写?下面是小编提供的范文参考:六月一日是我们儿童们的节日,今年的这一天与以往不同...
最新或2023(历届)快乐的六... 【篇一】明天就是六一儿童节了,妈妈特地上新城给我买了转笔刀。我非常喜欢它,因为它是苹果的形状,我最爱...
最新或2023(历届)难忘的六... 篇一:星期五 雷阵雨 5月23日为了让山区的小朋友过一个快乐的“六一”儿童节,我们班组织了捐文具、玩...
最新或2023(历届)六一儿童... Every day looking forward to the "61" Children has...