博客
关于我
Flutter 之 Dart语言基础详解 上篇
阅读量:618 次
发布时间:2019-03-13

本文共 2677 字,大约阅读时间需要 8 分钟。

Dart语言入门指南

Dart是一种现代化的编程语言,由谷歌开发,旨在为Web开发提供更高效的工具。作为Java和C++的替代品,Dart在移动应用开发(如Flutter)中表现尤为突出。本文将深入探讨Dart的核心概念,帮助你快速掌握基础知识。


一、关键字概述

Dart的关键字与Java类似,但也有一些独特之处。以下是一些常用的关键字:

  • 基本操作

    abstract、do、import、super、as、dynamic、in、switch、assert、else、interface、sync*、enum、implements、is、this、async*、export、library、throw、await、external、mixin、true、break、extends、new、try、case、factory、null、typedef、catch、false、operator、var、class、final、part、void、const、finally、rethrow、while、continue、for、return、with、covariant、get、set、yield*、default、if、static、deferred。

  • 集合和控制结构

    default、if、static、deferred 等关键字在集合和控制结构中有特殊用途。


二、变量声明

在Dart中,变量的声明方式多样,主要有以下几种:

  • 使用 var

    var 是最常用的关键字,变量类型可以在声明后修改:

    var name;name = 'tom';name = 123;

    编译器不会报错,因为 Dart 的类型系统是动态的。

  • 使用 dynamic

    dynamic 关键字允许变量保持完全动态,包括在运行时改变类型:

    dynamic name;name = 'tom';name = 123;
  • 使用 Object

    如果声明为 Object,变量的类型也可以在运行时改变:

    Object name;name = 'tom';name = 123;
  • 使用确定类型

    如果已知变量类型,使用确定类型声明:

    String name = 'tom';// name = 123; // 会报错

  • 三、默认值

    在 Dart 中,变量没有初始值时,默认值是 null。这是因为 Dart 中一切都是对象,对象的默认值是 null。例如:

    var name;assert(name == null); // 会通过print("assert pass");

    四、final 和 const

    final 和 const 是 Dart 中非常重要的关键字,它们用于指定变量的可变性。

  • final

    使用 final 修饰的变量无法更改其值,但可以是任意类型:

    final age = 1;final sex = '男';

    被 final 修饰的变量必须在声明时进行初始化。

  • const

    使用 const 修饰的变量表示常量,且必须在声明时初始化:

    const age = 1;final sex = '男';

    常量可以是简单值或数组、集合等复杂结构。

  • 常量的用法

    常量可以直接用于变量赋值:

    var varList = const [1, 2, 3];final finalList = const [1, 2, 3];const constList = [1, 2, 3];

    注意:类级别的常量必须使用 static const。


  • 五、内置类型

    Dart 提供了丰富的内置类型,涵盖了基本数据类型和集合操作。

  • 数值类型

    Dart 中的数值类型包括 int、double 和 num(num 是 int 和 double 的基类):

    num n1 = 1;num n2 = 1.0;print('n1 + n2 = ${n1 + n2}'); // 输出:n1 + n2 = 2.0
  • 字符串

    Dart 中的字符串可以用单引号 ' ' 或双引号 `"`` 表示。支持 Unicode 字符串操作:

    String string = 'haha';String string1 = "hahaha";

    使用 StringBuffer 可以实现字符串拼接:

    StringBuffer sb = StringBuffer();sb.write('aaa');sb.write('bbb');print('sb: $sb');
  • 布尔值

    Dart 中的布尔值与 Java 类似:

    bool isNull;print('isNull: $isNull'); // 输出:isNull: true
  • 集合

    Dart 提供了 List 和 Set 类,用于集合操作:

    List growableList = [1, 2, 3];growableList.add(4);print('growableList: $growableList');
  • 键值对集合 (Map)

    使用 Map 表示键值对:

    Map companies = {'Alibaba': '阿里巴巴', 'Tencent': '腾讯', 'Baidu': '百度'};print('companies: $companies');
  • 符号字符 (Runes)

    使用 Runes 表示 Unicode 字符:

    Runes runes = new Runes('\u{1f605} \u6211');String str1 = String.fromCharCodes(runes);print('str1: $str1');

  • 六、集合操作

    Dart 中的集合操作非常简便,包括 add、remove、containsKey 等方法:

    Set dynamicSet = Set();dynamicSet.add('a');dynamicSet.add('b');print('dynamicSet: $dynamicSet'); // 输出:{a, b}

    七、总结

    通过以上内容,可以看到 Dart 的语法与 Java 有很大的相似之处,但其动态类型系统和高效的集合操作使其在开发中更加灵活。对于 Android 开发者来说,Dart 的学习值得一试,尤其是在 Flutter 中,它可以与原生 Android 开发相结合,充分发挥双重优势。

    如果你想深入了解 Android 开发和 Flutter 技术,欢迎加入我们的免费直播课程和开发资料包!

    转载地址:http://aviaz.baihongyu.com/

    你可能感兴趣的文章
    Python块键盘/鼠标输入
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>