Flutter学习笔记:identical函数的用法以及常量构造函数的特点
identical函数
用法:
bool identical(
Object? a,
Object? b
)
作用:检查两个引用是否指向同一个对象,简单说就是检查两个实例是否共用一个存储空间
例1:
var o1= new Object();var o2= new Object();print(identical(o1,o2)); //falseprint(identical(o1,o1)); //true
由此得知,o1,o2不共用存储空间
例2:
print(identical([2],[2]));//falsevar a=[2];var b=[2];print(identical(a,b));//false
同样的,两个等同值的列表也是不公用存储空间的。
但是,有一个特例const:
const关键字在多个地方创建相同的对象的时候,内存中只保留了一个对象
例3:
const Object() 表示实例化常量构造函数
var o1=const Object();var o2=const Object();print(identical(o1,o2)); //trueprint(identical(o1,o1)); //trueprint(identical(const[2],const[2]));//trueconst a=[2];const b=[2];print(identical(a,b));//true
那么可知,共享内存空间的前提条件是:
1.常量
2.值相等
常量构造函数的特点
这是我们定义的Container类:
class Container{int width;int height;Container({required this.width,required this.height});//这是一个普通的构造函数
}void main(){var c1=new Container(width: 100,height: 100);var c2=new Container(width: 100,height: 100);print(identical(c1,c2));//false}
这是具有常量构造函数的container类:
class Container{final int width;final int height;const Container({required this.width,required this.height});
}void main(){var c1=new Container(width: 100,height: 100);var c2=new Container(width: 100,height: 100);print(identical(c1,c2));//falsevar c3=const Container(width: 100,height: 100);var c4=const Container(width: 100,height: 100);print(identical(c3,c4));//true}
所以我们可以得知:
1.常量构造函数需以const关键字修饰
2.const构造函数必须用于成员变量都是final的类
3.如果实例化时不加const修饰符,即使调用的是常量构造函数,实例化的对象也不是常量实例
4.实例化常量构造函数的时候,多个地方创建这个对象,如果传入的值相同,只会保留一个对象
5.Flutter中,const修饰不仅仅是节省组件构建时的内存开销,Flutter 在需要重新构建组件时,不会重新构建const组件(在重新build的时候不会构建const修饰的组件)
在特定情况下使用常量构造函数,能极大节约内存空间,并有效提升应用性能
Flutter学习笔记:identical函数的用法以及常量构造函数的特点相关推荐
- Flutter学习笔记(18)--Drawer抽屉组件
如需转载,请注明出处:Flutter学习笔记(18)--Drawer抽屉组件 Drawer(抽屉组件)可以实现类似抽屉拉出和推入的效果,可以从侧边栏拉出导航面板.通常Drawer是和ListView组 ...
- python里while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- python中while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- MySQL学习笔记—自定义函数
MySQL学习笔记-自定义函数 注释语法: MySQL服务器支持3种注释风格: 从'#'字符从行尾. 从'– '序列到行尾.请注意'– '(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如 ...
- matlab机器人工具箱学习笔记——ikine函数
matlab机器人工具箱学习笔记--ikine函数 ikine函数用法 使用实例 链接: https://blog.csdn.net/weixin_42596724/article/details/8 ...
- while用法python_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用
本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...
- Flutter学习笔记(10)--容器组件、图片组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...
最新文章
- 灰度图像--图像增强 双边滤波 Bilateral Filtering
- JS,JQ,PHP的小知识点整理
- 基于 Redis 实现的分布式锁
- 70 个数据分析常用网址,我先收藏了!
- 申请计算机助理的英语作文,有关于应聘团队助理的申请信的英语作文要有中文翻译...
- python中集合变量_详解python的变量缓存机制
- 程序员为什么非得参加一场编程竞赛?
- 论文笔记_S2D.44_自监督的从稀疏到稠密:用激光雷达和单目摄像机进行自监督深度补全
- 大气压力换算公式_气压单位换算表(压力单位换算公式大全)
- 主曲率、平均曲率、高斯曲率、法曲率、主方向
- Android自定义系列——10.PathMeasure
- 直角三角形(rigtri)
- moment.js时间操作
- 《爱乐之城》配色分享
- linux4.4 内核 netlink,wpa_supplicant与内核nl80211通信之Generic Netlink
- tradingview 修改K线的颜色,边框色,线条色
- 微软股价 2019 年飙升 55.3%,创十年来最佳表现!
- 29.【C语言】进制转换:10转16、10转2、2转10、16转10(Demo)
- GDAL使用DEM数据计算坡度坡向
- 【USACO3.1】解题报告
热门文章
- git describe --tags 后面的信息是什么意思
- photoshop打开图片显示的是索引,无法编辑解决
- 鸿蒙创造法则太极法则,【三九三六 鸿蒙战技】
- python2好还是3好_捉急,小白选择python2还是3?
- 【NodeJS】log4js打印日志
- js实现批量下载图片
- 度数计算机在线使用,在线测视力,网上测视力,电脑测视力,可以测视力的软件,网上测视力工具...
- 关于分部视图(Partial View)
- flutter 设置状态栏的颜色,背景appBar
- 【量化笔记】OBV指标交易策略