Dart基础

  1. 什么是Dart?

Dart 是一个由谷歌开发的通用编程语言,后来被 Ecma (Ecma-408)批准为标准。它用于构建 web、服务器、桌面和移动应用程序。

Dart 是一种面向对象的、类定义的、垃圾回收语言 ,使用C 样式的语法可以随意地转换为 JavaScript。 它支持接口、 mixin、抽象类、具体化泛型、静态类型等。

  1. 为什么使用它?
  • 语法清晰简洁
  • 高性能
  • JIT,AOT编译
  • 响应式

1 Dart部分特性

  • Dart是AOT(Ahead Of Time)编译的,可编译成快速,可预测的本地代码

  • Dart可以JIT(Just In Time)编译,开发周期快,为Flutter热重载提供基础

  • Dart可以轻松创建60fps运行的流畅动画和转场

  • Dart的声明式编程布局,易于阅读和可视化,不需要单独的声明式布局语言,如:XML,JSX

  • Dart非常易于学习,具有静态和动态语言,编程人员都熟悉的特性

2 Dart重要概念

  • 所有东西都是对象,无论是变量,数字,函数,null等都是对象,所有对象都Object类的子类

  • Dart语言是强类型编程,一旦确定类型,则不可改变变量类型,编译时会进行语法检查,但Dart允许弱类型语言式的编程

  • Dart代码在运行前解析,指定数据类型和编译时常量,可以提高运行速度

  • Dart语言的统一入口是main函数

  • Dart的私有特性是在变量或者函数名前面加上下划线 _

  • Dart 支持async/await异步处理

3 Dart关键字

在这里插入图片描述

4 Dart内置库

在这里插入图片描述

5 类型系统

Dart 是类型安全的: 它结合使用静态类型检查和运行时检查,以确保变量的值总是与变量的静态类型匹配。 尽管类型是强制的,但是类型声明是可选的,因为 Dart 会在编译时执行类型推断。

5.1 基本数据类型

在这里插入图片描述

5.2 核心概念

Dart中所有类型都是对象,都继承自Object类,上述类型的父类都是Object, 在Dart中null类型也继承自Object类。

6 基本语法

6.1 变量声明

/// 定义基本类型 , 使用var关键字进行类型定义时 ,定义并初始化时,后续赋值只能是相同类型。
/// 使用var 定义,不初始化 , 则后续可以任意类型赋值, 最终类型是dynamic类型,dynamic类型,不会检测成员,Object定义的变,会检测对象成员。
var variable = '12’;
/// 使用确定类型定义变量 , String 类型 , 使用确定类型赋值必须是相同类型
String name = ‘xiaoming’;

一切变量的初始化都是null,包括bool类型初始化也是null

6.2 常量声明

/// 使用const 定义的常量是不可变的, 需要定义并赋值,常量定义的集合,都是只读的,特性会传递到子元素,在内存中会复用相同内容对象
const PI = 3.1454567;
/// 使用final 定义的变量, 只能赋值一次,只作用在自身
final DE = 123231313;

7 常用数据类型及运算符

Dart中的数据类型,基本和Java相似,都有int,double,String等类型,Dart与Java类型的区别是,没有更小的类型,像short,float,char等类型。在Dart中数字类型的可以使用num类型来表示,num是int,double的基类,在Dart中,所有类型都是对象,不需要像Java一样拆箱装箱的操作。例如:String age = 20.toString();数字也是对象,可以直接进行方法操作。
在这里插入图片描述

8 集合

8.1 List

var ls = List(); // 不推荐
var ls = <String>[]; // 推荐

Ls2.add(‘one’);
Ls2.addAll([‘1’,’2’,’3’]);
Ls2.add(‘two’);
Ls2.remove(‘one’);

https://api.dartlang.org/stable/2.2.0/dart-core/List-class.html

8.2 Map

var personInfo = Map<String,Object>(); // 不推荐
var personInfo = <String,Object>{}; // 推荐

personInfo[‘name’] = ‘zeno’;
personInfo[‘age’] = 18;

https://api.dartlang.org/stable/2.2.0/dart-core/Map-class.html

9 枚举

枚举类型是一种特殊的类,通常用来表示相同类型的一组常量。使用关键字enum定义枚举。枚举的每一个值都有一个index属性,index从0开始计数。枚举不能被继承,不能创建实例。

enum ResponseState{
    Success,
    Error,
    Failure
}

10 时间处理

DateTime 对象代表某个时刻。时区是 UTC 或者 本地时区。

/// 获取当前时间 2019-03-04 14:48:28.948690
DateTime.now();

/// 创建一个指定年月日的DateTime对象, 后面可以继续添加时分秒毫秒等
/// 2019-03-03 00:00:00.000
DateTime(2019,3,3);

/// 解析日期字符串
DateTime.parse(‘2019-03-03 20:30:00’);

/// 解析时间戳
DateTime.fromMillisecondsSinceEpoch(1551616200000);

https://docs.flutter.io/flutter/dart-core/DateTime-class.html

11 面向对象

11.1 类定义及接口

Dart 是一个面向对象编程语言,同时支持基于 Mixin 的继承机制。 每个对象都是一个类的实例,所有的类都继承于Object,基于 Mixin 的继承 意味着每个类(Object 除外)都只有一个超类,一个类的代码可以在其他多个类继承中重复使用,从而达到多重继承的效果。

/// 定义类
class Person{
    String name;
    int age;
    Person(this.name,this.age);
}
/// 定义接口
abstract class Animal{
     void eat();
}

https://www.dartlang.org/guides/language/language-tour#classes

http://dart.goodev.org/guides/language/language-tour#classes

12 异常

Dart 异常是非检查异常。 方法不一定声明了他们所抛出的异常, 并且你不要求捕获任何异常。 Dart 代码可以 抛出任何非 null 对象为异常,不仅仅是实现了 Exception 或者 Error 的对象。

语法:

/// 抛出类型 , 与Java抛出异常类似
throw new FormatException('Expected at least 1 section’);
/// 抛出任意对象
throw 'Out of llamas!’;

/// 捕获异常
try{
}catch(){
}finally{}

https://docs.flutter.io/flutter/dart-core/Exception-class.html

http://dart.goodev.org/guides/language/language-tour#exceptions异常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值