一、编译模式
JIT编译模式(JIT In Time,即时编译)
JIT在运行时即时编译,在开发周期中使用,可以动态下发和执行代码,开发测试效率高,但运行速度和执行性能则会因为运行时即时编译受到影响。
AOT(Ahead of Time,运行前编译)
AOT即提前编译,可以生成被直接执行的二进制代码,运行速度快、执行性能表现好,但每次执行前都需要提前编译,开发测试效率低。
在开发期间可以使用JTI编译,可以缩短产品的开发周期。Flutter最受欢迎的功能之一热重载,正是基于此特性。而在发布期使用AOT,就不需要React Native那样在跨平台 JavaScript代码和原生代码之间建立低效的方法调用映射关系。所以,Dart具有开发测试效率高,运行速度快、执行性能好的特点。
二、内存分配与垃圾回收
并发是通过Isolate实现的。Isolate是类似于线程,但是不会共享内存,独立运行的worker。这样的机制,就可以让Dart实现无锁的快速分配。
Dart的垃圾回收机制则是采用了多生代算法。新生代在回收内存时采用半空间机制,触发垃圾回收时,Dart会将当前半空间中的活跃对象拷贝到备用空间,然后整体释放当前空间的所有内存。回收过程中,Dart只需要操作少量的活跃对象,没有引用大量死亡的对象则会被忽略,这样的回收机制很适合Flutter框架中大量的Widget销毁重建的场景。
三、Dart中一切都是对象
int bool null等,以及函数都是对象
四、关键字 late延迟加载
延迟加载初始化变量
例如:late String str
类实例化时某些值不初始化,无法通过静态检查,通过late就可以了,不会带来运行时风险
late String str1 = getString();
如果str1没有被使用,getString()方法不会被调用,str1就不会被初始化。
五、Dart变量
var dynamic Object
var定义时初始化了的变量,编译器会被推断类型,在赋值的那一刻决定了它的类型。
dynamic和Object都是动态的任意类型。不过dynamic编译阶段不检查类型,而Object编译阶段检查类型。
六、Dart内置类型
6.1 num 包含 int double 数据类型 int是自动伸缩的可长整型也可短整型
6.2 final以及const
final 定义的变量是运行时赋值,const定义的是编译时常量。
用final或者const修饰的变量,不能再次赋值。
final 可以先定义后初始化,const必须在定义的时候初始化。
final 不可修饰常量,const可以。
final修饰的top-level变量,必须在定义时初始化,修饰类中的成员变量,需要在构造函数体开始前初始化(可以在定义时初始化或者构造函数参数初始化 或者构造函数的初始化列表中初始化):const修饰类中的成员变量,需要加上static修饰词。
实例变量可以用final修饰,但不能用const修饰。
6.3 String
单双引号的作用是一样的
字符串格式化用${}
r前缀 简化转义字符 ‘C:\Users\Administrator’ 通过r前缀可简化为:r’C:\Users\Administrator’
多行显示 三个单双引号都可以,并且可以换行
‘’’
hhh
hhh
hhh
‘’’
bool就是boolean
6.4 list数组
List list = [];初始化//List list = new List();已经弃用了
List数组的使用
List list = [1,2,3];
int i = list[0];
for(int i in list){}遍历整个数组
6.5Map集合
Map<Int,Int> map ={1:1,2:2,3:3};
map[1] = 100;//给key为1的value更改为100
map[4] = 4;//新增一条数据
print(map[5]);//null因为没有定义以5为key的数组
print(map.keys);//打印所有的key值
print(map);//打印数组key value值
七、操作符
7.1 类型判断操作符
类型转换 as
类型判断 is !is
str is String str !is String
7.2赋值操作符
??= 如果变量没有值才进行赋值,一般用于设置默认值。
7.3条件表达式
三目表达式 condition ? expr1 : expr2
expr1??expr2 如果expr1是非空的,则返回其值;否则,计算并返回expr2的值。
7.4级联操作符

class Person {var name;var age;Person(this.name, this.age);getInfo() {print("${this.name},${this.age}");}
}main() {var p = new Person('张三', 20);p.getInfo();//..为级联操作,可以同时赋值执行方法p..name = "李四"..age = 30..getInfo();
}

7.5 安全操作符
person?.name 相当于非空判断
7.6 判断操作符
“==”比较两个值的hashCode是否相等
7.7 重写操作符
operator 重写操作符,例如函数重写等。可以看num类的重写操作符。

Flutter学习 dart语言特性相关推荐

  1. Flutter 学习 - Dart 语言基础

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

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

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

  3. Go学习笔记-语言特性

    Go学习笔记-语言特性 从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针. 引入包的概念,用于组织程序结构,Go ...

  4. 01_Go语言基础学习_Golang语言特性、环境搭建、第一个Go程序、包

    1. Golang语言特性: 垃圾回收: 1.内存自动回收,再也不需要开发人员管理内存: 2.开发人员专注业务实现,降低了心智负担 : 3.只需要new分配内存,不需要释放 天然并发: 1.从语言层面 ...

  5. 【Flutter】Dart 语言 ( Dart 语言特征 | JIT 即时编译 | AOT 静态编译 )

    文章目录 I . Dart 语言特征 II . JIT 即时编译 III . AOT 静态编译 I . Dart 语言特征 1 . Dart 语言特征 : ① 语言类型 : 强类型语言 ; ② 编译类 ...

  6. ObjC学习7-C语言特性

    开发中可能需要ObjC和C两种一起使用,再复习下C语言的一些知识. 1.数组 int arr[15],i; for(i=0;i<15;i++) { arr[i] = i; } for(i=0;i ...

  7. golan学习(1)语言特性以及基本语法

    1.golang的优点 天生支持高并发,适合电商平台等网页后端的开发 功能上有内存安全.GC(垃圾回收).结构形态以及CSP-style并发计算 内存runtime,支持垃圾回收 可以直接编译为机器码 ...

  8. Flutter获取随机数 Dart语言核心基础

    也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 学习Dart语言,首先我们需要使用到一个语言调试工具 DartPad 在 Dart 中,dart:math 类库提供了 数学常数和函数 ...

  9. flutter DateTime 日期时间详细解析 Dart语言基础

    也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 学习Dart语言,首先我们需要使用到一个语言调试工具 DartPad 在 Dart 中,DateTime 对象代表某个时刻,时区可以是 ...

最新文章

  1. linux卸载mpfr,Red Hat Linux在安装gcc时遇到的问题汇总
  2. ICRA 2021自动驾驶相关论文汇总 | 科研党看过来,全文干货
  3. 企业级java springcloud b2bc商城系统开源源码二次开发-hystrix 请求缓存
  4. 通过网络地址进行真机调试
  5. FFmpeg AVFMT_NOFILE宏定义剖析
  6. XML通过XSL格式化的那点事(XML到自定义节点折叠显示)
  7. 基于品类关系,虚拟类目如何建设?
  8. Jquery Dialog 详解(正在学习jquery,详解转载)
  9. Netty5+Jboss(Marshalling)完成对象序列化传输
  10. 新媒体运营:23种免费获取流量的运营套路 ,你知道几种? 黎想
  11. Cesium 三维球转动监听事件(相机监听事件)并且获取当前中心点位置
  12. uefi装完系统后无法引导_uefi装win7启动不了怎么解决?
  13. 关于快捷键 Ctrl+z 无效命令的问题
  14. jacob离线语音合成和百度AI在线语音合成
  15. 测试apk-异常管控Bluetooth攻击者开发
  16. 【Python】图像反转/反色的三种方法(pillow)
  17. Foursquare的前世今生
  18. 网易易盾验证码的安全策略
  19. FTP主动模式与被动模式的区别及如何选择
  20. iSpace PIM 3.6.0.2027 个人任务管理系统发布

热门文章

  1. [RHEL7基础篇-3] 包的安装与管理
  2. eNsp连接AC控制器,使用环回网卡进行web访问
  3. XPS文件如何在线转成Word
  4. TC-流量整形与限速
  5. 天干地支计算公式_天干地支主怎样计算?
  6. 痞子衡嵌入式:MCUXpresso IDE下工程链接文件配置管理与自动生成机制
  7. 星空软件 linux,[操作系统]25.Linux_星空网
  8. 自监督学习、半监督学习、弱监督学习
  9. 手机麦克风结构原理图_驻极体话筒构造和原理
  10. 如何设置 angular packageManager