Dart语言基础

语法基础:

  • 使用 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" 不会进行转译字符串

3.1 常见操作符: + * == []

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

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

4. 布尔类型:

bool true false

5. List(数组)

创建List

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

列表-List

6.键值对-Map

map相关操作


image.png

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

二、运算符

1.算数运算符:

image.png

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");
}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容

  • 此文章是v1.0+时编写,年代久远,小心有毒,谨慎食用!!! 一些重要概念 所有的东西都是对象,所有的对象都是类的...
    soojade阅读 10,047评论 2 27
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,795评论 2 16
  • 数据类型 在 Dart 里是强类型的,也有自动推断类型的机制。在 Dart 里定义变量使用有 var、const、...
    iwakevin阅读 6,454评论 0 18
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,744评论 0 8
  • 再厉害的人也只是沧海一粟 --------他强任他强,清风抚山岗,他横任他横,明月照大江。 河南省三门峡市卢氏县官...
    纪录东方王轩阅读 670评论 0 0