一、变量和常量的定义

1、关键字定义

Dart语法对于变量的声明主要用varconstfinal 关键字进行声明,

注意:不能同时使用var关键字和类型名声明变量,但是可以继续使用constfinal 关键字对该变量进行说明。

使用var关键字声明变量,则该变量的数据类型会根据初始化的值自动推断出该变量的数据类型;如果初始化没有赋值则该变量的数据类型为dynamic

  • var关键字。可以先声明后赋值或声明并赋值。如果进行了赋值操作,则该变量的类型由变量的值决定,如果声明时没有赋值,则值为null且类型为dynamic,可以赋值任何类型。
  • const关键字声明的变量只能在初始化时赋值一次,之后该变量的值是不可以修改的。
  • final关键字声明的常量只能赋值一次且声明时可以不用赋值。final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化。

2、类型声明变量

Dart中常见数据类型:String,num,int,double,bool、list、Map、dynamic。

const String name = "Tom"; // 定义字符串
int num = 12; // 定义整形
double floatNum = 2.22; // 定义浮点类型
bool isShow = true; // 定义布尔类型
list arr = [1, 2, 3]; // 定义集合类型
Map obj = {"name": "tom", "age": 20}; // 定义对象类型

二、常见的数据类型

Dart中常见数据类型:String,num,int,double,bool、list、Map、dynamic。

1、字符串类型

1、string定义可以使用单引号,双引号,还有三引号(跟单双引号相比会保留字符格式);

// 跟其他语言类似
var str = 'string';
String str1 = "string";
// 会保留换行和回车
String str2 = '''name:Dart''';
print(str);
print(str1);
print(str2);
// 输出结果为
string
string
name:Dart

2、我们也可以用str[1] 读取字符串的某一位字符:

var str = 'staring';
print(str[1]) // 输出 t

3、字符串拼接

var name = "Tomy";
print('name: $name'); // 输出 name: Tomy
var num1 = 1;
var num2 = 2;
print('num1 + num2 = ${num1 + num2}'); // 输出 num1 + num2 = 3
String h = 'hello';
String sh = h + name;
print(sh) // 输出 helloTomy
String ab = 'aaa''bbb';
print(ab); // 输出 aaabbb

4、string 常见属性及方法

我们可以在编辑器中直接点进去看源码,了解常见的属性和方法,下面只列举一部分:

String str = "name:Dart";
str.length; // 返回字符串长度
str.codeUnits; // 返回给定字符串的UTF-16代码单元列表
str.hashCode; // 返回一个整数,表示数值的哈希码
str.isEmpty; // 如果字符串为空,则返回true; 否则返回false。
str.isNotEmpty; // 如果字符串不为空,则返回true; 否则返回false。
str.runtimeType; // 返回当前数据类型,所有数据类型都有。
str.split(":"); // 以:分割字符串。输出 [name, Dart]

具体的使用可以通过另一篇博客学习:常用的字符串属性和方法。

或者利用编辑器提示功能查看该类型有哪些方法和属性,针对性学习:

2、数值类型

数值类型可以有 numintdouble 这三种关键字声明数据类型:

1、num声明的变量为数据类型,可以是整数也可以是小数。

num a = 18;
print(a.toInt()); // 转成int类型 (舍去小数)
print(a.toDouble()); // 转成double型

2、int 声明的变量值只能是整数

int a = 18;
print(a.isEven); // 判断一个数字是否为偶数
print(a.isOdd); // 判断一个数字是否为奇数

3、double 声明的变量值可以是整数,也可以是小数。如果值为整数,则会自动补上小数点和 0

double a = 10;
print(a); // 输出 10.0

4、关于运算符,除以下两个其余和其他高级语言用法一致,此处不过多赘述。主要学习一下Dart中特有的条件赋值运算:??= 及条件表达式: ??运算符。

void main(List<String> args) {var a;a ??= 10; // 当a为null的时候赋值10a ??= 5;print(a); // 10
}
void main(List<String> args) {var a = 10;var b;print(b ?? a); // 输出10,如果左边有值则返回左边,如果左边没值则返回右边
}

3、布尔类型

类型定义可使用bool关键字,主要值有true和false两个值,跟其他语言用法基本一样。

4、集合类型

类型定义可使用List关键字声明数据类型。

Dart中的集合分为:

  • 可变集合: 可以对集合中的数据进行操作。
  • 不可变集合:集合中的数据不允许操作。
List list1 = [1,2,3,4,5,6] // 可变集合
List list2 = const [1,2,3,4,5,6] // 不可变集合

5、对象类型

类型定义可使用Map关键字声明数据类型。

Dart中的对象类型跟集合一样分为:可变对象及不可变对象。

可变对象合可以对对象中的数据进行操作,不可变对象中的数据不允许操作。

Map obj1 = { 'name': 'lili', 'age': 20 } // 可变集合
Map obj2 = const { 'name': 'lili','age': 20 } // 不可变集合
print(obj1['name']) // lili 对象取值
obj1['name'] = 'zhansan' // 赋值操作

三、流程控制语句

Dart中的流程控制语句支持if(){}语句、if(){}else{} 语句、for(){}循环语句……,也支持switch语句等,流程控制语句跟JavaScript及其他高级语言一样,请参考其他语言学习。

四、函数

Dart 中的方法是一个对象,函数返回值的类型及参数可以省略,当函数体只有一句话的时候可以是用箭头函数。

void main() {print('hello dart');
}
// 可以简写为:
main() => print('hello dart');

1、可选参数

可选参数使用 {} 包裹时,代表是无序的可选参数。此时,可选参数传参时必须带上变量名。如果需要给可选参数指定类型,必须在类后面加一个 ?, 标识其是一个可以为空的类型;当有默认值时,则不需要在类后面跟 ?

void main() {print(sum(1, b:2, c: 3));
}
sum(a, {int? b, int c = 0}) {b ??= 0;return a + b + c
}
// 输出 6

可选参数使用 [] 包裹时,代表是有序的可选参数,此时,可选参数传参时不需要带上变量名,参数会自动依次赋值给可选参数。

void main() {print(sum(1, 2));
}
sum(a, [int? b, int c = 0]) {b ??= 0;return a + b + c;
}
// 输出 3  => reutn 1 + 2 + 0;

2、匿名函数和立即执行函数

Dart 中的函数也有 匿名函数立即执行函数,跟 js 中的匿名函数和立即执行函数用法是一样的。

void main() {List list = [1, 2, 3, 4, 5];forEachDemo(list, (a) => print('a****$a'));
}void forEachDemo(List list, Function action) {for(var i in list) {action(i);}
}
// 输出:
a****1
a****2
a****3
a****4
a****5

3、闭包函数:

闭包能够访问外部方法内的局部变量,并持有其状态(这是闭包最大的作用,可以通过闭包的方式,将其暴露出去,提供给外部访问)

内部 指的是当前的 main 或者是当前的执行函数,外部指的是要调用的函数。

void main() {// 获取闭包var func = say();for(var i = 0; i < 5; i++) {func();}
}say() {init num = 0;printCount() {print(num++);}// 返回闭包return printCount;
}

Dart 是面向对象的编程语言,所以类是一个很重要的概念,我们来学习dart的 类 。

【Dart语言第1篇】基础学习相关推荐

  1. Flutter Dart语言入门一篇就够了

    Dart介绍 Dart 是一种用于开发Android.IOS. Web和桌面应用的开源编程语言. 它是由Google开发的. Dart 语法类似于 C.javascript 和 java 语言. 先决 ...

  2. dll文件用什么语言编写_零基础学习markdown标记语言语法,十分简单便捷编写markdown文件...

    引言:在完成了使用开源的Atom软件搭建好编写markdown的环境后,接下来就进行我们的第一个markdown文件的编写,同时学习markdown标记语言的基础语法,都是十分简单的一些标记,如果学习 ...

  3. 零基础学c语言要多久,零基础学习单片机编程需要多长时间?

    单片机自学要多长时间 学习单片机就是学习单片机的硬件结构,内部资源与外设的应用.在C语言中(极少量的汇编)掌握各种功能的初始化,启动与停止,实现各种功能函数的编写与调试. 下面咱们就来分步骤看一下对于 ...

  4. c语言需要哪些英语基础,学习C语言的必备基础知识(国外英语资料).doc

    学习C语言的必备基础知识(国外英语资料) 满卧裹瑟莉筑部获搪肪棱惺杀摄械圭旬敷豹休登悬邱雀报台盼拈毒鹰进怀却恩登雄旁二宇谊婆叔陌嘎扇体歌嫉蹿久题篡憨琵夹涌芦鸣褐颂诅讳拴狸果液梦绸亥氯确杯牌憨耗终贼况榔 ...

  5. C语言(第1篇)简明学习教程

    目录 1.初识C语言 2.C语言概述 3.数据类型 4.输入输出 1.初识C语言 1.特点:c语言库较少,编程更偏向底层,想要什么就做什么,所以执行速度更快.(所以Python这样的程序语言不用库就和 ...

  6. 着色器语言(GLSL)基础学习三

    内置的常量 glsl提供了一些内置的常量,用来说明当前系统的一些特性. 有时我们需要针对这些特性,对shader程序进行优化,让程序兼容度更好. 在 vertex Shader 中: 1.const ...

  7. 给Java开发者的Flutter开发基础---Dart语言

    接近半年没有在简书冒泡了.这段时间一是忙于使用云信IM开发相应项目,二是整理和收集相关Flutter的相关资料进行学习.国内关于Flutter的资料还是太过于稀少,以至于我只能去YouTube和Ude ...

  8. Dart语言基础,看完这篇文章就够了(二)

    文章内容是我在学习Flutter过程中对知识点的梳理和总结.如有不对的地方,欢迎指出. 本文承接Dart语言基础,看完这篇文章就够了(一),进一步了解Dart语法知识. 文章目录 1 流程控制语句 2 ...

  9. flutter基础 dart语言学习笔记

    1.JIT(Just-In-Time 动态编译) 即时编译为什么能大幅度提升性能 JIT,即Just-in-time,动态(即时)编译,边运行边编译: https://book.flutterchin ...

  10. Flutter 学习 - Dart 语言基础

    文章目录 前言 一.Dart 概述 Dart 重要的概念 二.变量与基本数据类型 三.函数 四.运算符 五.流程控制语句 六.异常处理 七.面向对象 构造函数 继承类 抽象类 枚举类型 八.泛型 九. ...

最新文章

  1. 获取运行中的TeamViewer的账号和密码--中文版
  2. 凸现三围的健身运动法
  3. 电脑装服务器系统好处,服务器选用Linux系统的几个好处
  4. 操作系统锁的实现方法有哪几种_「从入门到放弃-Java」并发编程-锁-synchronized...
  5. 【转】2.1 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)
  6. RabbitMQ 示例-生产者-消费者-direct-topic-fanout
  7. Celery+Rabbitmq实现异步任务
  8. 浅谈-LINUX 操作系统启动过程
  9. python复杂网络全局效率计算_python复杂网络库networkx:算法
  10. Python描述性统计
  11. 【转】告诉你外语学习的真实方法及误区分析(精编版)-part 3
  12. 如何在word中同一位置处插入多篇连续文献
  13. 设计专业是计算机的吗,计算机平面设计是属于计算机什么专业范畴?
  14. HDS F900装机小结
  15. 经济学的思维方式 [Basic Economics A Common Sense Guide to the Econom]
  16. Android 获取手机的IMEI
  17. 【无标题】微信小程序:强制更新(测试编译)
  18. tplink wr886n v2 硬改
  19. 快手极速版56位 sig3
  20. 2019最新传智黑马web前端开发(系统学前端)

热门文章

  1. 【论文阅读】深度学习与多种机器学习方法在不同的药物发现数据集进行对比
  2. v6使用手册 天正电气t20_电气工程设计软件-T20天正电气软件下载 v6.0官方版--pc6下载站...
  3. JAVA的0x1b分隔符_hive 特殊分隔符 0X1B
  4. Exporting the operator hardsigmoid to ONNX opset version 11 is not supported
  5. JavaScript之this释疑
  6. 心形函数的几种表达式
  7. 分析内网即时通讯软件安全性如何
  8. astah新建一个项目_Astah Professional
  9. centos7 xmapp安装完报错:error while loading shared libraries: libc.so.6
  10. 用计算机制作多媒体作品小学,小学信息技术六年级上册《多媒体作品制作—古诗欣赏》教案...