基本的Dart项目

//定义一个函数
printNumber(num aNumber) {//打印到控制台print('数字是:$aNumber');
}//程序从这里开始执行
main(List<String> arguments) {//声明并初始化一个变量var number = 42;//调用一个函数printNumber(number);
}

代码中用到的知识点如下

//这是一个注释
表示后面是注释,另外还可以使用/*...*/num
一种类型,其他的内置类型有String、int和bool42
文字,在编译时是常量print()
一种方便输出显示的方式'...'和"..."
一个字符串$aNumber和${aNumber}
在字符串中插入变量或表达式main()
入口函数var
声明一个任意类型的变量注意:
dart的缩进为两个空格
和java不同,dart没有public、protected和private这些关键字,如果标识符前面加“_”,就是私有变量或者函数

变量

下面的例子创建变量并分配一个值

var name = 'Bob';

默认值

//所有变量最初都是null
int lineCount;
//assert在生产模式下会被忽略,在检查模式下非真就抛出一个异常
assert(lineCount == null);

final和const

如果你不打算改变一个变量,可以使用final和const,它们可以替代任何类型,只能在声明时初始化,且不能改变,const如果在类级要用static const标记成静态常量

final name = 'Bob';
//name = 'Alice';  执行会出错
final monicker = name + '123';const bar = 1000000;
//bar = 2000000;  执行会出错
const atm = 1.01325 * bar;

从使用上根本看不出区别,它们的区别在于,const是编译器常量,它的值在编译期就可以确定,final是运行时常量,它的初始值要到编译时才能确定,使用final能让程序启动更快

内置类型

数字

int

整数值,范围通常在-32768到32767之间,num的子类型

int x = 1;
int hex = 0xDEADBEEF;
int bigInt = 34653465834652437659238476592374958739845729;

double

64位双精度浮点数,按照IEEE754的标准,num的子类型

double y = 1.1;
double exponents = 1.42e5;

数字与字符串的转换

//String -> int
int one = int.parse('1');
assert(one == 1);//String -> double
double onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);//int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');//double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');

位运算

//0011 << 1 == 0110
assert((3 << 1) == 6);
//0011 >> 1 == 0001
assert((3 >> 1) == 1);
//0011 | 0100 == 0111
assert((3 | 4) == 7);

字符串

dart的字符串是UTF-16编码的序列,可以用单引号或双引号创建字符串

String s1 = 'Single quotes work well for string literals.';
String s2 = "Double quotes work just as well.";
String s3 = 'It\'s easy to escape the string delimiter.';
String s4 = "It's even easier to use the other delimiter.";

使用${expression}在字符串中插入表达式,如果是标识符,可以省略{ },如果要获取对象对应的字符串,可以使用toString()方法

String s = 'string interpolation'assert('Dart has $s, which is very handy.' =='Dart has string interpolation, which is very handy.');
assert('That deserves all caps. ${s.toUpperCase()} is very handy!' =='That deserves all caps. STRING INTERPOLATION is very handy!');

使用相邻方式或“+”都可以连接字符串

String s1 = 'String ' 'concatenation' " works even over line breaks.";
assert(s1 == 'String concatenation works even over line breaks.');String s2 = 'The + operator ' + 'works, as well.';
assert(s2 == 'The + operator works, as well.');

使用三重单引号或三重双引号可以创建多行字符串

String s1 = '''
You can create
multi-line strings like this one.
''';String s2 = """This is also a
multi-line string.""";

通过加前缀“r”可以创建原始字符串

String s = r"In a raw string, even \n isn't special.";

通过转义可以使用Unicode码

// \u2665 -> ♥
print('Unicode escapes work: \u2665');

布尔值

dart的布尔类型bool,只有两个布尔常量,true和false

String name = 'Bob';
if (name != null) {print('You have a name!');
}

列表

在dart中,数组是List对象,所以通常叫列表

List list = [1, 2, 3];

列表索引从0开始,是第一个元素,list.length-1是最后一个元素

List list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);

映射

通常Map是关联key和value的对象,key和value可以是任何对象,key是唯一的,value可以重复

Map gifts = {//Keys      Values'first' : 'partridge','second' : 'turtledoves','fifth' : 'golden rings'
};Map nobleGases = {//Keys  Values2  : 'helium',10 : 'neon',18 : 'argon',
};

可以使用Map构造函数创建和上面相同的对象

Map gifts = new Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';Map nobleGases = new Map();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';

在现有的Map中添加一个新的键-值对

Map gifts = {'first' : 'partridge'};
//添加一个键-值对
gifts['fourth'] = 'calling birds';

在Map中检索值

Map gifts = {'first' : 'partridge'};
assert(gifts['first'] == 'partridge');

查找不存在的key,会返回null

Map gifts = {'first' : 'partridge'};
assert(gifts['fifth'] == null);

使用.length可以获取Map中键-值对的数量

Map gifts = {'first' : 'partridge'};
gifts['fourth'] = 'calling birds';
assert(gifts.length == 2);

Dart基础-变量与类型相关推荐

  1. 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...

    编辑 | Cowboy 校对 | 李明 来源 | 牛角财经 目的 | python量化基础 | 变量和简单的数据类型,零基础都可以看懂!!! python教程 从入门到高级(免费) 特点:案例基于金融 ...

  2. Js基础——变量类型和计算

    JS基础--变量类型和计算 一.基本数据类型 二.引用类型 三.typeof判断数据类型 四.浅拷贝与深拷贝 4.1 浅拷贝 4.2 深拷贝 五.数据类型转换 5.1== 和 === 一.基本数据类型 ...

  3. Python学习01、计算机基础概念、初识Python、常量,变量,类型和表达式、字符串、动态静态类型、注释

    前言:本文章主要用于个人复习,追求简洁,感谢大家的参考.交流和搬运,后续可能会继续修改和完善. 因为是个人复习,会有部分压缩和省略. 计算机基础概念 什么是计算机? 现在我们所说的计算机不光能进行算术 ...

  4. 【Python】基础语法 1(常量与表达式、变量和类型、注释、输入输出、运算符)

    文章目录 1. 常量与表达式 2. 变量和类型 2.1 变量是什么 2.2 变量的语法 2.3 变量的类型 2.3.1整数 2.3.2 浮点数 2.3.3 字符串 2.3.4 布尔 2.3.5 其他 ...

  5. c语言基础-变量类型和定义

    c语言基础-变量类型和定义 一.常量与变量 常量:固定的一个值 例如1 2 3 A B 变量:一个固定的内存地址,其中存储的值可以变化,这个地址的名字在程序体现就是变量 例子: #include &q ...

  6. 【C++】C++基础 —— 变量和基本类型

    参考资料:C++ Primer 中文版(第5版)--[美] Stanley B. Lippman [美] Josée Lajoie [美] Barbara E. Moo 著 王刚 杨巨峰 译 代码编辑 ...

  7. python基础-变量,变量类型,字符串str,元组tuple,列表list,字典dict操作详解(超详细)

    python基础--变量 (文章较长,若需要单独看某一个点,可点击目录直接跳转) 文章目录 python基础--变量 1. 变量 2. 变量类型 2.1数字类型 2.2 字符串 2.3 列表 2.4 ...

  8. 【Python基础学习笔记day08】python变量的基本使用+变量定义ipython+pycharm+超市买苹果+变量的类型+关于函数+变量的格式化输出+个人名片案例

    变量的基本使用 文章目录 变量的基本使用 目标 01. 变量定义 1) 变量演练1 -- iPython 2) 变量演练 2 -- PyCharm 3) 变量演练 3 -- 超市买苹果 思考题 02. ...

  9. python二郎成长笔记(一)(pip升级,python入门,基础,python2和3不同格式带来的问题,头文件引用的格式,变量的类型,__name__ == '__main__')

    二郎的操作系统是windows,之前同时安装了python2和python3,因此在一些应用中还涉及了版本切换以及安装插件等问题. 同时安装是指在Anaconda中完成的,Anaconda(官方网站) ...

最新文章

  1. 【Maven3教程】Maven多工程、多模块
  2. 常用模块-----configparser subprocess
  3. Leetcode804.Unique Morse Code Words唯一摩尔斯密码词
  4. miui android mmi,小米5miui9稳定版自改官包方法
  5. Eclipse hibernate Tools下载
  6. 电脑应用程序分身双开及多开(能记住账号和密码)
  7. 走进音视频的世界——剖析exo播放器架构
  8. APP+spring boot校园购物网站 毕业设计-附源码041037
  9. 多卡聚合设备助力无人机监控盲区打好疫情阻击战
  10. 书架html5,基于HTML5 Canvas的CSG构造实体几何书架
  11. JAVA六大设计原则 和 23种设计模式
  12. OpenCV的cv::cvtColor()
  13. 功率谱密度的一个小理解
  14. 上海踩踏事件所想,莫把应急预案当摆设
  15. linux open驱动失败,linux所遇到的问题记录
  16. linux系统应用学习(三)--- 动态库静态库
  17. Android 7.0 行为变更
  18. Movie Studio 15 Platinum——Vegas带你一起开创新的纪元
  19. Java虚拟机(JVM)面试题(2020最新版)
  20. 如何开展企业数据资产评估

热门文章

  1. Problem F. Grab The Tree博弈
  2. 模型加速:WAE-Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks
  3. 4-2 面向复用的软件构造技术
  4. 中文信息处理(三)—— 词性标注
  5. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——L题 建立火车站
  6. 个人所得税计算及多人避税问题
  7. FormData对象
  8. SpringBoot学习笔记(4):自定义的过滤器
  9. ios8 毛玻璃效果
  10. python——Django(ORM连表操作)