如需转载,请注明出处:Flutter学习笔记(3)--Dart变量与基本数据类型

一.变量

在Dart里面,变量的声明使用var、Object或Dynamic关键字,如下所示:

var name = ‘张三’;

在Dart语言里一切皆为对象,所以如果没有将变量初始化,那么它的默认值为null(包括数字),如果需要判断变量是否为null,则需要进行如下判断:

String name;if(name == null);

上面var name = ‘张三’,并没有显示的声明变量的类型,我们也可以显示的声明:String name = ‘张三’;如果对象(变量)不仅限于单一类型,请用Object或Dynamic关键字来进行修饰;

二.常量与固定值

在Dart语言里面,如果想要声明不变的常量,可以使用final和const来进行修饰。

1.final

final修饰的常量必须在声明的时候就进行初始化,而且在初始化之后值不可变;

final userName = '张三';
userName = ‘李四’;//会引发错误

2.const

const与final不同,const是一个编译时的常量,这也就意味着通过const修饰的常量,在编译期间就要被初始化,不能等到程序运行后在进行初始化;

const userName;//错误,const是编译时常量,需要在声明时进行赋值初始化
const userName = ‘张三’;//正确 var name = ‘张三’;
const userName = name;//错误,name是个变量,不能赋值给const

const不仅仅可以声明常数变量,也可以声明常量值以及声明创建常量值的构造函数,任何变量都可以有一个常量值;

final aList = const[];
const bList = const[];
var cList = const[]; 这里的aList和bList就是两个空的、不可变的列表集合,而cList则是空的、可变的列表集合;
需要注意的是:cList可以重新赋值,而aList和bList不可以重新复制;

三.基本数据类型

Dart语言常用的基本数据类型包括:Number数字、String字符串、Boolean布尔、List数组、Map集合、symbol符号;

1.Number类型包括int整型和double浮点型;

int整型:取值范围为-2^53到2^53,int类型不能包含小数点;

double浮点型:64位(双精度)浮点数;

int和double都是num类型的子类,num类型包括的运算操作有:+、-、*、/、以及移位操作>>,num类型包括的常用方法有:abs、ceil和floor;

2.String类型

String s1 = ‘张三’;
String s2 = ‘李四’;
String s3 = s1 + s2;
print(s3);
打印:张三李四; //单引号里面嵌套单引号,必须在前面加上反斜杠
String s4 = ‘单引号里面有单引号it\'s,必须在前面加反斜杠’; //双引号里面嵌套单引号,可以正常使用
String s5 = “双引号里面有单引号it‘s,可正常使用”; //单引号里面嵌套双引号,可以正常使用
String s6 = ‘单引号里面有双引号“hello word”,可以正常使用’; //双引号里面嵌套双引号,必须在前面加上反斜杠
String s7 = “双引号里面有双引号\“hello word\”,必须在前面加上反斜杠” //可以通过使用单引号或双引号的三引号来创建多行文字;
String s8 = '''这是一个
多行的
文本'''; String s9= """这也是一个
多行的
文本""";

3.Boolean类型

bool a = false;

4.List集合

和java一样, list里面的数据必须同一类型的数据,而且下标是从0开始的;

var list = [,,];
//声明一个编译时常量const的list
List list = const[,,];

5.Map集合

Map类型将Key和Value关联在一起,也就是键值对,像其他支持Map的编程语言一样,Key必须是唯一的;

var week = {
‘Monday’ : ‘星期一’,
‘Tuesday’ : ‘星期二’,
‘Wednesday’ : ‘星期三’,
‘Thursday’ : ‘星期四’,
‘Friday’ : ‘星期五’,
‘Saturday’ : ‘星期六’,
} var week = new Map();
week['Monday'] = ‘星期一’;
week['Tuesday'] = ‘星期二’;
week['Wednesday'] = ‘星期三’;
week['Thursday'] = ‘星期四’;
week['Friday'] = ‘星期五’;
week['Saturday'] = ‘星期六’;

添加新的Key-value对,对上面week再添加一个新的值;

week[''] = '星期日';

这里的0不是只下标的索引,而是一个键(Key),因此我们要打印week的length的话,长度为7;

检查Key是否再Map对象中

assert(week['Mond'] == null);

下一章节:Flutter学习笔记(4)--Dart函数

Flutter学习笔记(3)--Dart变量与基本数据类型的更多相关文章

  1. Flutter学习笔记(5)--Dart运算符

    如需转载,请注明出处:Flutter学习笔记(5)--Dart运算符 先给出一个Dart运算符表,接下来在逐个解释和使用.如下:                            描述       ...

  2. Flutter学习笔记(8)--Dart面向对象

    如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...

  3. Flutter学习笔记(6)--Dart流程控制语句

    如需转载,请注明出处:Flutter学习笔记(5)--Dart流程控制语句 条件语句:if.if...elseif.if...elseif...else ; ) { print('优秀'); } &g ...

  4. Flutter学习笔记(4)--Dart函数

    如需转载,请注明出处:Flutter学习笔记(4)--Dart函数 Dart是一个面向对象的语言,所以函数也是对象,函数属于Function对象,函数可以像参数一样传递给其他函数,这样便于做回调处理: ...

  5. Flutter学习笔记(6)--Dart异常处理

    如需转载,请注明出处:Flutter学习笔记(6)--Dart异常处理 异常是表示发生了意外的错误,如果没有捕获异常,引发异常的隔离程序将被挂起,并且程序将被终止: Dart代码可以抛出并捕获异常,但 ...

  6. Flutter学习笔记(1)--环境安装

    flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...

  7. Flutter学习笔记(9)--组件Widget

    如需转载,请注明出处:Flutter学习笔记(9)--组件Widget 在Flutter中,所有的显示都是Widget,Widget是一切的基础,我们可以通过修改数据,再用setState设置数据(调 ...

  8. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  9. Flutter学习笔记(11)--文本组件、图标及按钮组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 文本组件 文本组件(text)负责显示文本和定义显示样式,下表为text常见属性 Text组件属性及描述 属性名 类型 默认 ...

随机推荐

  1. handler looper和messageQueue

    一.用法. Looper为了应付新闻周期,在创建过程中初始化MessageQueue. Handler在一个消息到当前线程的其他线程 MessageQueue用于存储所述消息 Looper其中线程创建 ...

  2. PHP模拟POST提交数据并获得返回值之CURL方法(使用PHP extension,然后使用php_curl.dll,很不错)

    今天公司做个东西,需要条用同事的接口,我的代码和他的代码不在同一个域下,但是都是子域. a.ifensi.com与b.ifensi.com的关系. 我需要传递一个关联数组过去,他那边给我返回一个jso ...

  3. Visual C++ 编译器自动假定带 .C 扩展名的文件是 C 文件而不是 C++ 文件,并且拒绝 C++ 语法和关键字(c语言只能在大括号最前面申明变量)

    今天在编译OpenGL红宝书附带源码中的light.c文件时遇到一个诡异的问题: 如图light .c,在不做任何修改的情况编译OK.然而只要在某些地方写了可执行代码,则会无法通过编译器编译! (这几 ...

  4. QTextStream 居然接受FILE*这样的传统参数

    实在是太爽.太牛了,无话可说-

  5. Quora的技术探索

    关于问答类的应用,最早接触的是stackoverflow和知乎 ,而Quora作为知乎的原型,因为其创始人来自FaceBook而吸引了我.事实上关于Quora的技术分析,冯大辉和陈皓都已经有所详细的阐 ...

  6. Python日记:基于Scrapy的爬虫实现

    安装 pywin32 和python版本一致 地址 https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/安装过程中提示 ...

  7. 【原创】基于Docker的CaaS容器云平台架构设计及市场分析

    基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交 ...

  8. 高性能JSON解析器及生成器RapidJSON

    RapidJSON是腾讯公司开源的一个C++的高性能的JSON解析器及生成器,同时支持SAX/DOM风格的API. 直击现场 RapidJSON是腾讯公司开源的一个C++的高性能的JSON解析器及生成 ...

  9. delphi7 xml通用解析转换为stringgrid

    对于有n多记录的xml,可以填充到stringgrid中 其中 vkeynode 为 xml中 重复节点 function CommonAnalyzeXml(vxml,vkeynode: string ...

  10. Cleanmymac X 4.4.3 激活破解版|兼容mac最新系统-Mac电脑清理工具

    CleanMyMac X 4.4.3 激活破解版为最新版清理工具,为你所爱的东西腾出空间.CleanMyMac拥有一系列巧妙的新功能,它可以安全.智能地扫描和清理整个系统,删除大的未使用的文件,卸载不 ...