Dart简易教程 (1)---数据类型 运算符,类转换换
从下面开始学习DART编程
以下是一个简单的示例:
main(){
var number = 42;
print(number);
}
程序说明,dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒,主程序必须要先有一个main()主函数方法
以上是基本示例 至于函数返回值 和参数,暂时不讲,
在学习Dart语言时,请记住以下事实和概念:
- 在变量中可以放置的所有东西都是对象,而每个对象都是类的实例。无论数字、函数和null都是对象。所有对象都继承自[Object]类。
- 尽管Dart是强类型的,但类型声明是可选的,因为Dart可以推断类型。 在上面的代码中,数字被推断为int类型。 如果要明确说明不需要任何类型,请使用[特殊类型dynamic]。
- Dart支持通用类型,如List<int>(整数列表)或List<dynamic>(任何类型的对象列表)。
- Dart支持顶级函数(如main()),以及绑定到类或对象(分别是静态方法(static)和实例(instance)方法)的函数。您还可以在函数(嵌套或局部函数)中创建函数。
- 类似地,Dart支持顶级变量,以及绑定到类或对象(静态和实例变量)的变量。实例变量有时被称为字段或属性。
- 与Java不同,Dart没有公开、保护和私有的关键字。如果标识符以下划线(_)开头,则该标识符对其库是私有的。有关详细信息,请参见[库和可见性]。
- 标识符可以以字母或下划线(_)开头,然后是这些字符加上数字的任何组合。
- 有时候,某事物是一个表达(expression )还是一个语句(statement)是很重要的,所以这两个词要准确。
- Dart工具可以报告两种问题:警告和错误。警告只是表明您的代码可能不工作,但它们不会阻止您的程序执行。错误可以是编译时错误,也可以是运行时错误。编译时错误阻止了代码的执行;运行时错误导致代码执行时引发异常。
dart 关健字比健多,
下标中列出了Dart中的所有关键词
| abstract (1) | do | import (1) | super |
| as (1) | dynamic (1) | in | switch |
| assert | else | interface (1) | sync* (2) |
| async (2) | enum | is | this |
| async* (2) | export (1) | library (1) | throw |
| await (2) | external (1) | mixin (1) | true |
| break | extends | new | try |
| case | factory (1) | null | typedef (1) |
| catch | false | operator (1) | var |
| class | final | part (1) | void |
| const | finally | rethrow | while |
| continue | for | return | with |
| covariant (1) | get (1) | set (1) | yield (2) |
| default | if | static (1) | yield* |
| deferred (1) | implements (1) |
(1)带有上标1的单词是内置标识符。避免使用内置标识符作为标识符。如果尝试为类或类型名使用内置标识符,则会发生编译时错误。
(2)使用上标2的单词是在Dart的1.0版本之后添加的与异步支持相关的更新的、有限的保留字。在以async, async*, 或者 sync* 标记的任何函数体中,不能使用async, await, 或者 yield作为标识符。有关更多信息,请参见异步支持。
关键字表中的所有其他词都是保留词。不能使用保留词作为标识符。
变量与默认值
定义变量可以 var n =5; 也可以简成 int n = 5; 暂不支持golang或者python 那种高级多定义方法
须要说明的是 var 后就不要写类型 , 写了类型 不要var 两者都写 var a int = 5; 报错
定义字符串:
var s1 = 'Single quotes work well for string literals.';
var s2 = "Double quotes work just as well.";
var s3 = 'It\'s easy to escape the string delimiter.';
var s4 = "It's even easier to use the other delimiter.";
同样支持 \n \t \r 这些写法
以下关于数字定义
数字类型 numbers 有二种形式 一种是int 长度给操作系统有关,,32 位64位,最高长度不一样。。
一种是double 精度给ieee标准有关。。
int x = 1;
16进制写法
int hex = 0xDEADBEEF;
int bigInt = 34653465834652437659238476592374958739845729
关于字符定义
关于布尔
数据类型详细说明:
未初始化的变量的初始值为null。甚至具有数字类型的变量最初也是null,因为数字——就像dart中的其他东西一样——是对象。
程序默认值:如果变量只申明没有定义只会有默认值 ,转换类型失败也会返回默认值 ,稍后补充
int lineCount;
assert(lineCount == null); // assert类似于if 语句,出错后会标飘红报错
Final 和 const修饰符 、、// 定义常量
final 可以开始不赋值 只能赋一次 ; 这是两者的差别。
这里有一个创建和设置final变量的例子:
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
您无法更改final变量的值:
name = 'Alice'; // Error: a final variable can only be set once.
//这个是错误示例,在使用时final变量是不可以更改的
对于想要在编译时确定并且不再变的变量,使用const。如果const变量位于类级别,则将其标记为静态const。在声明该变量时,将该值设置为编译时常量,例如数字或字符串字面量、const变量或常量数字算术运算的结果:
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere
const关键字不只是声明常量变量。您还可以使用它来创建常量值,以及声明创建常量值的构造函数。任何变量都可以赋一个常量值。
var foo = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`
您可以更改一个非final的非const变量的值,即使它曾经有一个const值: 这儿foo 是var 定义的,,所以值能改变,,
foo = [1, 2, 3]; // Was const [] 这儿返回正确值
你不能改变const变量的值: baz是 const定义的 不能改变
baz = [42]; // Error: Constant variables can't be assigned a value.
区别二:final 是惰性初始化,即在运行时第一次使用前才初始化。而 const 是在编译时就确定值了。
编译时常量指的是:字面量(如数字、bool、字符串、List的字面量形式)、其它常量 或者 常量的算术运算,也可以是这些的组合形式(递归要求),简单地说常量就是可以在编译时确定的值。
Dart简易教程 (1)---数据类型 运算符,类转换换的更多相关文章
- Dart 语言简易教程系列
google Fuchsia系统 及 dart语言简介 在 InteIIiJ IDEA 中搭建 Dart 的开发环境 Dart Linux 开发环境搭建 Dart 语言简易教程(一) Dart 语言简 ...
- JavaScript简易教程(转)
原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...
- JavaScript简易教程
这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScript的世界——前提是你有一些编程经验的话.本文试图描述这门语言的最小子集.我给这个子集起名叫做“Java ...
- [转]Unity3D Editor 编辑器简易教程
Star 自定义编辑器简易教程 an introduction to custom editors 原文地址 http://catlikecoding.com/unity/tutorials/star ...
- flutter简易教程
跟Java等很多语言不同的是,Dart没有public protected private等关键字,如果某个变量以下划线 _ 开头,代表这个变量在库中是私有的.Dart中变量可以以字母或下划线开头,后 ...
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- Ant 简易教程
转载:http://www.cnblogs.com/jingmoxukong/p/4433945.html Ant 简易教程 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动 ...
- Intellj IDEA 简易教程
Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...
- Zabbix实战-简易教程系列
一.基础篇(安装和接入) Zabbix实战-简易教程--总流程 Zabbix实战-简易教程--整体架构图 Zabbix实战-简易教程--DB安装和表分区 Zabbix实战-简易教程--Server端 ...
随机推荐
- Windows协议 LDAP篇 - 域权限
windows 访问控制模型 也就是大名鼎鼎的ACM,access control mode 由两部分组成的. 访问令牌(access tokens) 其中包含有关登录用户的信息(User SID,G ...
- HDFS总结
hadoop分布式文件存储系统,用来解决海量数据的存储问题 HDFS的组成------核心配置文件:hdfs-site.xml.core-site.xml NameNode:负责整个HDFS集群的管理 ...
- Using Emacs as Clojure IDE
Open emacs24; Change CWD to parent folder of project home: M-x cd ~/docs/tmp; Build a leiningen proj ...
- git只提交部分修改的文件(提交指定文件)
在我们的项目中,经常会在本地编译一些代码,还未写完,测试那边来告诉你要改改某个文件的bug,非常着急,此时改完了,提交的时候,自己还在编译的代码并不想提交,此时,你可以利用git这些指令帮助你! 1/ ...
- Markdown常用的格式
一级标题 Markdown # Markdown 二级标题 Markdown ## Markdown 三级标题 Markdown ### Markdown 四级标题 Markdown #### Mar ...
- Redis如何实现分布式锁
今天我们来聊一聊分布式锁的那些事. 相信大家对锁已经不陌生了,我们在多线程环境中,如果需要对同一个资源进行操作,为了避免数据不一致,我们需要在操作共享资源之前进行加锁操作.在计算机科学中,锁(lock ...
- pikachu PHP反序列化 XXE SSRF
PHP反序列化在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 另外这个漏洞一般是在代码审计的时候发现的,在扫描或者黑盒测试的时候很难发现.1.序 ...
- JVM学习笔记之类加载机制【八】
一.类加载时机 1.1 触发类初始化的六个场景: 加载? 1.遇到new.getstatic.putstatic或invokestatic这四条字节码指令时 如果类型没有进行过初始化,则需要先触发其初 ...
- NOIP 模拟 $36\; \rm Dove 打扑克$
题解 \(by\;zj\varphi\) 引理 对于一个和为 \(n\) 的数列,不同的数的个数最多为 \(\sqrt n\) 证明: 一个有 \(n\) 个不同的数的数列,和最小就是 \(n\) 的 ...
- [ES6深度解析]12:Classes
我们将讨论一个老问题:在JavaScript中创建对象的构造函数. 存在的问题 假设我们想要创建最典型的面向对象设计的示例:Circle类.假设我们正在为一个简单的Canvas库编写一个Circle. ...