• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Dart语言基础

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

语法基础:

  • 使用 var 声明一个变量
  • 使用 final 声明一个只能赋值一次的变量
  • 使用 const 声明一个常量
var bb=123;
final s=123;
const ss=123123;

一、Dart中的数据类型

1. 数值型-Number 分为2种类型

  • 1.1 可以是任意类型:num 因为num是int和double的父类
  • 1.2 整型 :int
  • 1.3 浮点型: double

2. 数值型操作符

“+” 、 " -"、 " *"、 “/” 、 ~/ (取整) 、 %取余

3. 字符串-String

  • 使用单引号或者双引号创建字符串
  • 使用三个引号创建多行字符串
  • 使用r创建raw字符串 r"hello \n world" 不会进行转译字符串

4. 常见操作符: + * == []

String str="hello";    
print(str * 2);    //hellohello   
print(str[1]);   //e
  • 插值表达式
    ${expression} 表达式
  int e=5;
  int f=8;
  print("e+f = ${e+f}");   //e+f = 13
  print("e= $e"); //e= 5
  • 代表将字符串重复出现几次
  • 常用属性: length 、isEmpty 、isNotEmpty

  • 常用方法 替换,索引,去分隔,截取,大小写转换等。

5. 布尔类型:

bool true false

6. List(数组)

创建List

  var list=[1,2,3];
  var list2=const[1,2,4,6];
  var list3=new List();

列表-List

7.键值对-Map

map相关操作

Runes,Symbols类型(用不到)
dynamic 相当于java中的泛型

二、运算符

1.算数运算符:

2.关系运算符:

== 、!= 、>、 <、 >=、 <=

需要注意的是:java中字符串判断内容是否相同使用equal ,判断地址相同才使用== ,而在Dart中使用== 表示内容判断

3.逻辑运算符:

! 、&&、 ||

4.赋值运算符:

  • 4.1基础运算符: = 、??=
  • 4.2复合运算符:+= 、-=、*=、/=、%=、~/=
  //  ??= 运算符的含义,如果有初始值,则使用,没有值,则进行赋值
  int r=10;
  int v;
  v ??=r;
  print(v);   // 10

  v=90;
  v ??=r;
  print(v);  //90

条件表达式

  • 三目运算符 :condition?expr1 : expr2;
  • ?? 运算符:expr1??expr2
  // ?? 条件表达式
  String sss;
  String str2="dart";
  String ss=sss??str2;
  print(ss);   //dart

循环语句

  for(var index=0;index<list.length;index++){
    print(list[index]);
  }

  //for... in...
  for(var item in list){
    print(item);
  }

switch…case…语句:

比较类型:num,String,编译器常量
continue 跳转标签

三、方法特性

  • 方法也是对象,并且有具体类型Fucnction

  • 返回值类型,参数类型都可以省略

  • 箭头语法: => expr 是 {return expr;}缩写

  • 方法都有返回值,如果没有指定,默认return null;

可选参数
可选命名参数{param1、param2、…}
可选位置参数[param1、param2、…]

void main(){ 
 getPerson("OnexZgj");
  getPerson("OnexZgj",age: 18);
  getPerson("OnexZgj",age: 18,male: true);

  getPerson2("Linsa");
  getPerson2("Linsa",17);
  getPerson2("Linsa",17,false);

  
}

//可选参数类型
getPerson(String name,{int age,bool male}){
  print("name= $name,age=$age,male=$male");
}


getPerson2(String name,[int age,bool male]){
  print("name= $name,age=$age,male=$male");
}

输出如下结果:
name= OnexZgj,age=null,male=null
name= OnexZgj,age=18,male=null
name= OnexZgj,age=18,male=true
name= Linsa,age=null,male=null
name= Linsa,age=17,male=null
name= Linsa,age=17,male=false

四、方法对象Function

void main() {
 //匿名方法的调用
 Function fuc = (str){
   print("the world is beautiful! $str");
 };

 fuc(123);

 //方法对象使用
 var method = printInfo();
 method();
}

printInfo () {
 print("Hello OnexZgj");
}

五、闭包

  • 闭包是一个方法(对象)

  • 闭包定义在其它方法的内部

  • 闭包的作用,通过闭包,将方法内部的局部变量暴露出来。

void main() {
  var method=a();
  method();
  method();
  method();
}

a() {
  var count = 0;
//  printInfo() {
//    print(count++);
//  }
//  return printInfo;

    return (){
      print(count++);
    };
}

练习代码

void main() {
  int a = 10;
  double b = 12.5;

  print("hello world OnexZgj");

  //num 常用函数
  double c = 10.5;
  print(c.floor()); //不大于本身的最大整数  10

  print(c.ceil()); //大于本身的最小整数  11
  print(c.abs()); // 绝对值 10.5
  print(c.round()); //四舍五入 11

  print(c.toInt()); // 10
  print(c.toDouble()); // 10.5

  //字符串常见方法
  String str = "hello";
  print(str * 2); //hellohello
  print(str[1]); //e

  //插值表达式
  int e = 5;
  int f = 8;
  print("e+f = ${e + f}"); //e+f = 13
  print("e= $e"); //e= 5

  //布尔类型
  bool F = true;
  bool D = false;
  print(F);

  //创建数组
  var list = [1, 2, 3];
  var list2 = const [1, 2, 4, 6];
  var list3 = new List();
  list.forEach(print);

  //创建Map

  var map = {"name": "onexzgj", "sex": "man"};
  print(map);  //{name: onexzgj, sex: man}

  //常量map
  var map1 = const {"age ": 23, "isStudent": true};
  print(map1);  //{age : 23, isStudent: true}

  //list转为map的操作
  var map2 = list.asMap();
  print(map2); //{0: 1, 1: 2, 2: 3}


  //  ??= 运算符的含义,如果有初始值,则使用,没有值,则进行赋值
  int r=10;
  int v;
  v ??=r;
  print(v);   // 10

  v=90;
  v ??=r;
  print(v);  //90


  // ?? 条件表达式
  String sss;
  String str2="dart";
  String ss=sss??str2;
  print(ss);   //dart


  for(var index=0;index<list.length;index++){
    print(list[index]);
  }

  //for... in...
  for(var item in list){
    print(item);
  }


  String language= "sss";
  switch(language) {
    case "java":
      print("java is my favorite!");
      break;
    case "dart":
      print("dart is my favorite!");
      break;

  }

  getPerson("OnexZgj");
  getPerson("OnexZgj",age: 18);
  getPerson("OnexZgj",age: 18,male: true);

  getPerson2("Linsa");
  getPerson2("Linsa",17);
  getPerson2("Linsa",17,false);


}

//可选参数类型
getPerson(String name,{int age,bool male}){
  print("name= $name,age=$age,male=$male");
}


getPerson2(String name,[int age,bool male]){
  print("name= $name,age=$age,male=$male");
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
第三个Dart程序扩展(访问lib文件里的成员变量)发布时间:2022-07-13
下一篇:
Linux下安装dart sdk并配置环境变量发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap