Dart初始<1>(1)

1.简单的Dart程序

void printInteger(int aNumber) {
  print('The number is $aNumber'); // The number is 42
}

// 这是程序的入口
void main() {
  var number = 42;
  printInteger(number);
}

1.上面代码解释

  • // 注释
    • 以双斜杠开头的一行语句称为单行注释,Dart同样支持多行注释和文档注释
  • void
    • 一种特殊的类型,表示一个值永远不会被使用。类似于main()和printInteger()的函数,以及void声明的函数返回类型,并不会返回值
  • int
    • 另一种数据类型,表示一个整数数字
  • 42
    • 表示一个数字字面量。数字字面量是一种编译时常量
  • print()
    • 一种便利的将信息输出显示的方式
  • '…'或"…"
    • 表示字符串字面量
  • $variableName(或${expression})
    • 表示字符串插值:字符串字面量中包含的变量或表达式
  • main()
    • 一个特殊且必须的顶级函数,Dart应用程序总是会从该函数开始执行
  • var
    • 用于定义变量,通过这种方式定义变量不需要指定变量类型

2.Dart重要概念

  • 所有变量引用的都是对象,每个对象都是一个类的实例;数字、函数以及null都是对象。除去null以外(如果开启了空安全),所有的类都继承于Object类
  • Dart是强类型语言,但是在声明变量时指定类型是可选的,因为Dart可以进行类型推断
  • 如果开启了空安全,变量在未声明为可空类型时不能为null。通过在类型后加上问号(?)将类型声明为可空;表达式后添加 ! 断言表达式不为空(为空时抛出异常)
  • 显示地声明任意类型,使用Object?(如果开启了空安全)、Object或者特殊类型dynamic将检查延迟到运行时进行
  • Dart支持泛型,比如List<int>或List<Object>
  • Dart支持顶级函数,同时还支持定义属于或对象的函数(即静态和实列方法)。还可以在函数中定义函数(嵌套或局部函数)
  • Dart支持顶级变量,以及定义属于类或对象的变量(静态和实列变量);实列变量有时称为域或属性
  • Dart没有类似于JAVA那样的public、protected和private成员访问限定符。如果一个标识以下划线(_)开头则表示该标识符在库内是私有的
  • 标识符可以以字母或下划线(_)开头,其后可跟字符和数字的组合
  • Dart中表达式和语句区别,表达式有值而语句没有
  • Dart工具可以显示警告错误两种类型的问题。警告表明代码可能有问题但不会阻止其运行。错误分为编译时错误运行时错误;编译时错误代码无法运行,运行时错误会在代码运行时导致异常

3.变量

3.1默认值

  • 在Dart中,未初始化以及可空类型的变量拥有一个默认的初始值null,即便数字也是如此,因为Dart中一切皆为对象,数字也不例外
int? lineCount;
assert(lineCount == null);
  • assert()的调用将会在生产环境的代码中被忽视,在开发过程中,assert(condition)将会在条件判断未false时抛出一个异常
  • 若开启了空安全,必须在使用变量前初始化它的值’
int lineCount = 0;

3.2延迟初始化变量

  • Dart 2.12新增了 late 修饰符,这个修饰符可以在一下情况中使用
    • 声明一个非空变量,但是不在声明时初始化
    • 延迟初始化一个变量
late String description;
void main(){
	description = 'Feijoada';
	print(description);
}
  • 若 late 标记的变量在使用前没有初始化,在变量被使用时会抛出运行时异常

3.3Final和Const

  • 不想更改一个变量,可以使用关键字final或者const修饰变量,这两个关键字可以替代var关键字或者加在一个具体的类型前。一个final变量只可以被赋值一次,一个const变量是一个编译时常量(const变量同时也是final的)
  • 实列变量可以是final的但不可以是const
  final name = 'Bob';
  final String nickname = 'Bobby';

  // The final variable 'name' can only be set once.
  // name = 'Alice';
  • 使用关键词const修饰变量表示该变量未编译时变量。如果使用const修饰类中的变量,则必须加上static关键字,即 static const。在声明const变量是可以直接为其赋值,也可以使用其他的const变量为其赋值
const bar = 1000;
const double atm  = 1.0315* bar;
  • const 关键字不仅仅可以用来定义常量,还可以用来创建 常量值,该常量值可以赋予给任何变量。你也可以将构造函数声明为 const 的,这种类型的构造函数创建的对象是不可改变的
	var foo = const [];
  final bar = const [];
  const baz = []; //Equivalent to `const[]`

  // 没有使用final或const修饰的变量是可以被更改的,即使这些变量之前引用过const的值
  foo = [1, 2, 3];
  • 可以在常量中使用 类型检查和强制类型转换 (is 和 as)、 集合中的 if 以及 展开操作符 (… 和 …?)
const Object i = 3;
const list = [i as int]
const map = {if(i is int)i: 'int'}
const set = {if (list is List<int>)...list

4.内置类型

4.1 Number(int,double)

1.int
  • 整数值,长度不超过64位,具体取值范围依赖于不同的平台,在DartVM上的取值范围-2^63 ~ 2^63-1;在web上,整型数值代表JS的数字(64位无小数浮点型),其允许取值范围 -2^53 ~ 2^53-1
var x = 1;
var hex = 0xDFEABBA;
2.double
  • 64位的双精度浮点数字,且符合IEEE 754标准
var y = 1.1
var exponents = 1.42e5;
3.其他
  • int和double都是number的子类,如果number及其子类不能满足你的要求,可以查看dart:math库中的API
// 在Dart2.1之前,在浮点数上下文中使用整数字面量是错位的
double num = 1;

// string -> int
var one = int.parse('1');
//double -> string
String piAsString  = 3.1415926.toStringAsFixed(2);// 3.14

4.2 Strings(String)

  • Dart字符串(String对象)包含了UTF-16编码的字符序列,可以使用单引号或双引号来创建字符串
var s1 = "双引号创建字符串";
var s2 = '单引号创建字符串';
1. ${表达式}
  • 在字符串中,请以${表达式}的形式使用表达式,如果表达式是一个标识符,可以省略{};如果表达式的结果为一个对象,则Dart会调用该对象的toString()方法来获取一个字符串
// 代码中文解释
var s = '字符串插值';

assert('Dart 有$s,使用起来非常方便。' == 'Dart 有字符串插值,使用起来非常方便。');
assert('使用${s.substring(3,5)}表达式也非常方便' == '使用插值表达式也非常方便。');

4.3 Booleans(bool)

4.4 Lists(也称为arrays)

4.5 Sets(Set)

4.6Maps(Map)

4.7 Runes(常用于在Characters API 中进行字符替换)

4.8 Symbols(Symbol)

4.9 The value null(Null)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值