【Dart】=> [02] Dart初体验-基础语法(变量-常量-数值-布尔-字符串-列表-字典-安全机制

Dart初体验

效果:运行Dart程序,并输出字符串 ‘hello itcast’

  1. 创建Dart文件 hello.dart,(Dart文件的后缀是 .dart )
  2. 编写Dart代码
   // 程序肯定都是有入口的 : main函数
void main(){
  //打印字符串 'hello dart'
  print('hello dart');
}
  1. 运行 hello.dart 文件
  • 终端执行命令:dart hello.dart

基础语法

能够知道变量和常量、数据类型、运算符、流程控制的基本使用

学习内容:

  1. 变量
  2. 常量
  3. 数据类型
  4. 运算符
  5. 流程控制

变量

  1. 思考:编写代码时,如何表示一个数字? 字面量

  2. 思考:编写代码时,如何对数据进行计算? 表达式

  3. 思考:如何记录计算结果? 变量

  4. 变量:
    在计算机中记录计算结果,并在需要的时候使用,可以修改
    语法:var 变量名 = 表达式;

    var age = 18;
    

    类型推断:var 声明的变量支持类型推断,并且有类型检查

在这里插入图片描述

void main(){
  //计算机中,表示一个数字:字面量
  1;
  10;

  //表达式 计算机中记录计算结果,使用表达式对数据进行计算并且得到结果
  1 + 10 ;
  print(1+10);
  print(1+10);

  //变量:计算机中记录计算结果,并且在需要的时候去使用
  //语法:var 变量名 = 表达式
  var num = 1+10;
  print(num);
  print(num);

  //变量特点:
  //可以修改
  var age = 18;
  print(age);
  age = 19;
  print(age);

  // 支持类型推断:修改变量时会检查类型
  // A value of type 'String' can't be assigned to a variable of type 'int'.
  // age = 'hello';
}

常量

  1. 思考:如何记录不可变的数据? 常量:用于记录不可变的数据,不可以修改

  2. 关键字: const 和 final

  3. 语法:在这里插入图片描述

  4. 区别:

    • const 是编译期常量,用于记录程序在编译期就要能确定的值
    • final 是运行时常量,用于记录程序在运行时确定的值
      在这里插入图片描述
void main(){
  //const 
  const a = 10;
  print(a);
  // Constant variables can't be assigned a value.
  // a = 20;

  // final
  final b = 30;
  print(b);

  //区别
  var x = 1;
  var y = 2;

  //final:运行时常量,值在运行时赋值
  final ret1 = x+y;

  // const :编译期常量,值在编译时赋值
  // const res2 = x+y;
  const rest3 = 1+2;
}

数据类型

虽然,Dart可以使用var关键字定义不同类型的变量,并且有类型推断和检查
但是,我们依然可以在定义变量时明确的指定变量的类型,从而更好的做类型检查

学习内容:

  1. 常用数据类型

    • num(数值)
    • bool(布尔)
    • String(字符串)
    • List(列表)
    • Map(字典)
  2. Dart空安全机制

数值类型

在这里插入图片描述

布尔类型

bool 类型用于记录真 或 假,一般用于逻辑判断
真:true
假:false

void main() {
  // 需求:使用布尔类型记录用户是否登录成功
  // 登录成功:true
  bool isLogin = true;
  print(isLogin);
  // 登录失败:false
  isLogin = false;
  print(isLogin);
}

字符串类型

  1. 定义字符串:String // 定义字符串:String String name = 'zzm'; print(name);
  2. 拼接字符串: 插值表达式: ‘ 表达式 ′ 或 ′ { 表达式 }' 或 ' 表达式变量’ 案例:拼接商品价格 double price = 199.0;
  3. 注意点:使用 + 拼接字符串时,只能 ‘字符串’ + ‘字符串’ // String priceStr = '${price}起'; String priceStr = '$price起'; print(priceStr);
void main() {
  // 定义字符串:String
  String name = 'zzm';
  print(name);

  // 拼接字符串: '199.0起'
  // 准备价格:double
  double price = 199.0;
  // 价格字符串拼接
  // String priceStr = '${price}起';
  String priceStr = '$price起';
  print(priceStr);
}

List(列表)类型

  1. List(列表)可以有序的存储数据 定义列表:List // 定义列表:List // 需求:按序存储 '居家' '美食' '服饰' List categories = ['居家', '美食', '服饰'];
  2. 使用列表:查改增删
  3. 列表长度:列表. length
  4. 查询:列表[角标]
  5. 修改:列表[角标] = 新值
  6. 新增:
    新增一个元素:列表.add(新值) 新增一个列表:列表. addAll(新列表)
    删除: 删除指定的元素: remove(元素) 或者removeAt(角标) (侧滑删除购物车时使用
  7. 遍历列表:列表.forEach()
void main() {
  // 定义列表:List
  // 需求:按序存储 '居家' '美食' '服饰'
  List categories = ['居家', '美食', '服饰'];
  print(categories);
  List nums = [1, 3, 5, 7];
  print(nums);

  // 使用列表:查改增删
  // 查询:
  // 查询列表的长度,就是列表内部元素的个数
  int len = categories.length;
  print(len);
  // 查询指定的元素: 列表[索引]
  String category = categories[1];
  print(category);

  // 修改:列表[索引] = 新值
  categories[1] = '美食家';
  print(categories);

  // 新增:
  // 新增一个元素,一次新增一个元素:列表.add(新元素)
  categories.add('母婴');
  print(categories);
  // 新增一个列表,一次新增多个元素:列表.addAll(新列表)
  categories.addAll(['办公', '生鲜']);
  print(categories);

  // 删除
  // 使用元素删除
  categories.remove('生鲜');
  print(categories);
  // 使用索引删除
  categories.removeAt(4);
  print(categories);

  // 遍历列表:取出所有商品分类名称
  // element: 列表中遍历读取的元素
  categories.forEach((element) {
    print(element);
  });
}

Map(字典)类型

Map(字典)是使用 键值对 来存储数据的
语法:{ key: value }

// 需求:记录商品分类的编号 和 名称
  Map category = {
    'id': 1,
    'name': '居家',
  };
  1. 定义字典:
  2. 使用字典:查改增删
  3. 查询:字典[key]
  4. 修改:字典[key] = 新值
  5. 删除:字典.remove(key)
  6. 新增(不常用):字典[新key] = 新值(注意:新key 必须是 不存在的key)
  7. 遍历字典:字典.forEach()
void main() {
  // 定义字典:{key: value}
  // 需求:记录商品分类的编号 和 名称
  Map category = {
    'id': 1,
    'name': '居家',
  };

  // 使用字典:查改增删
  // 查询:字典[key]
  String name = category['name'];
  print(name);
  // 修改:字典[key] = 新值
  category['name'] = '美食';
  print(category);
  // 删除:remove(key)
  category.remove('name');
  print(category);
  // 新增:字典[新key] = 值
  // 注意:key必须是当前字典中不存在的key,很少使用新增
  category['name'] = '办公';
  print(category);

  // 遍历字典
  category.forEach((key, value) {
    print('$key -- $value');
  });
}

Dart空安全机制

  1. Dart 从 2.12.0 版本开始,已支持健全的空安全机制

  2. 在空安全机制下,代码中的类型默认都是非空的 除非将变量明确的声明为可空,否则它一定是非空的类型

  3. 作用:原本处于运行时的空值引用错误,将变为编译时的分析错误,从而BUG会发现的更早在这里插入图片描述

  4. 空安全机制下,如何定义并使用变量?

  5. 变量不能为空时:指定默认值

  6. 变量可以为空时:使用 ? 明确的指定变量可以为空

     ` // 直接设置默认值
  String name2 = 'itheima';
  // The non-nullable local variable 'name2' must be assigned before it can be used.
  print(name2.length);

  // 使用 ? 明确的指定变量可以为空
  String? name3;
  // name3? : 表示非空检查,如果name3为空,不去调用属性或方法,如果name3不为空,可以调动属性或方法
  print(name3?.length); `
void main() {
  // 需求:定义字符串,并获取字符串长度
  String name1 = 'zzm';
  print(name1.length);

  // 直接设置默认值
  String name2 = 'zzxm';
  // The non-nullable local variable 'name2' must be assigned before it can be used.
  print(name2.length);

  // 使用 ? 明确的指定变量可以为空
  String? name3;
  // name3? : 表示非空检查,如果name3为空,不去调用属性或方法,如果name3不为空,可以调动属性或方法
  print(name3?.length);
}

dart-saga:[WIP] Redux-Saga到Dart的端口
05-15
dart-saga(和redux-saga)是一个旨在使应用程序副作用(例如,诸如数据获取之类的异步事物和诸如访问浏览器缓存之类的不纯之物)更易于管理,更有效地执行,易于测试以及更好的库。处理失败。 redux-saga使用带有...
Dart 入门到跑路 ------ 变量常量 、命名规则、运算符(一)
More丶的博客
04-13 470
变量 dart 脚本语言,可以不预先定义类型自动推断。和Go一样 var str =" 从入门到跑路"; String str = '从入门到跑路'; *注意 : var 后不用谢类型 写了类型就不要写var 两者同时存在 会报错* ...
Dart中=(箭头函数)
wgefcelgu的专栏
06-09 947
在计算机编程中,箭头函数(也称为Lambda表达式)是一种具有简单语法的匿名函数。在Dart中,箭头函数通常用于作为集合类方法(如 map,where,reduce等)的参数或将函数赋值给变量时来提高代码的简洁性和可读性。当然,如果函数体比较复杂或者需要多条语句的时候,建议还是使用普通函数写法。当然,箭头函数仍然需要遵循函数的基本规则(如正确的参数类型、返回类型等),但它可以使代码更加简洁明了。在箭头函数中,“=>” 符号用于分离函数声明和函数体。箭头函数表达式最常见的用途是作为集合的迭代器或回调函数。
Dart语法基础系列五《String 源码API详解》,2024年最新计算机大学生毕业设计题目
最新发布
2401_84159911的博客
04-08 579
string.
dart语法
越思考越清晰
06-29 2361
重温dart语法 文章目录@[toc]入门dddd 入门 1、入口方法两种定义方式 main(){ print('你好dart'); } //加void表示方法没有返回值 void main(){ print('你好dart'); } dddd ...
Dart 表达式以及语法糖汇总
TDSSS的博客
02-21 901
Dart语言中有许多语法糖或者说lambda表达式,语法和代码量是简洁了许多,但给想要入门的我添加了许多困扰,我经常看官方API或者第三方文档API的时候,在示例中大量的使用了类似的语法糖,让代码的可读性大大下降,要搜索很多文章查看才能理解这段代码到底是啥意思,这篇文章是我自己做的一些语法糖汇总。
Dart】= [05] Dart初体验-函数
Write less,do more
01-15 598
Dart函数的结构:调用函数:案例:定义计算任意两个整数之和的函数,并返回计算结果。
dart语言匿名函数与=>语法
weixin_34261739的博客
01-24 830
dart语言匿名函数与=>语法 => expr 等同于{ return expr; } 匿名函数的参照如下: ([[Type] param1[, …]]) { codeBlock; }; 例子 (context) => HomePage(widget.isDark, themeChanger) 上面的语句翻译过来就是 func_name(context){return Hom...
awesome-dart:精选的Dart框架,库和软件的精选列表
01-31
**Dart语言与awesome-dart资源列表** Dart是由Google开发的一种面向对象的、静态类型的编程语言,设计用于构建高性能的Web、移动和服务器应用程序。它具有简洁的语法,支持单线程事件循环模型,以及强大的异步编程...
DART2 Prima Plus-教程3-MAP
04-08
例如,你可以创建一个字符串到整数的映射,或者一个对象到布尔值的映射。 ### 2. 创建Map 创建`Map`对象有多种方式: - 使用大括号`{}`初始化一个空的Map:`var myMap = {};` - 初始化并赋值:`var myMap = {'key...
quill-delta-dart:在Dart中实现Quill编辑器Delta格式
05-05
Dart中实现Quill编辑器Delta格式。 有关更多详细信息,请参考官方。 用法 import 'package:quill_delta/quill_delta.dart' ; void main () { var doc = new Delta ().. insert ( 'Hello world' , { 'h' : '1' });...
dart-json-mapper:从JSON序列化反序列化Dart对象
02-03
将JSON数据转换为Dart对象以及将Dart对象转换回JSON是常见的需求,这就是`dart-json-mapper`库的作用。 `dart-json-mapper`是一个强大的库,它简化了Dart中的JSON序列化和反序列化过程。通过使用注解(annotations...
Dart语言——45分钟快速入门(上)
贵公子丶笔记
12-03 1142
文章目录 前言视频课程环境准备安装Dart SDK配置环境变量配置 VSCode 编辑器测试环境 基础语法代码注释内置数据类型变量常量定义变量定义常量 内置类型的常用操作数值类型字符串布尔类型列表映射 函数定义函数函数的参数命名可选参数位置可选参数 ...
Dart 」一文了解 Dart 基础知识
Aerfa789的博客
02-24 1508
本文介绍了 Dart 的环境搭建以及 Dart 语法,包括变量常量、数据类型、函数、操作符、类、泛型等等。 安装 在 Dart for Windows (gekorm.com) 下载安装包安装 Dart SDK。 在 VSCode 中安装 Dart 和 Code Runner 插件。 新建一个 .dart 文件,输出 “Hello dart!” : void main() { print('Hello dart!'); } Run Code: Hello dart! 变量常量
这可能是最早的RxDart使用入门教程。。。
吉原拉面
09-19 6708
原文地址:RxDart: Magical transformations of Streams (国际惯例,英文好的请去看原文,我的翻译可能会省去一些东西,同时加入一些自己的想法,便于自己理解。与其说是一篇翻译,不如说是一份自己的学习笔记。)   在这篇文章中,我们将来谈一谈如何使用RxDart对Streams进行各种神奇对变换,我会重点介绍RxDart中的常用函数,同时讲解对应的App。   ...
Dart语言笔记(运算符、箭头函数、可选参数)
m0_52856466的博客
04-06 2534
注:本文仅记录一些和java语法不甚相同或较难理解部分,方便个人的查找和学习 1.在 Dart 中有两个比较特殊的运算符。 赋值运算符??= 条件运算符?? void operatorTest(){ // dart中的运算符 /* * 赋值运算符 ??= * 条件运算符 ?? * */ //举例 var a; a ??= 10;//当a没有值的时候就赋值 10 print(a); a ??= 5; print(a); a ??= 1; print(a)..
01Flutter dart基础语法
LJLThomson的博客
03-30 377
dart知识 一、dart变量 常量 命名规则 变量 var str = 'this is var'; int num = 20; 脚本类型语言,自动推导 常量 const值:一开始就需要赋值,值不变 final:运行时赋值,只赋值一遍,对象不能修改 命名规则 与其他语言一致 二、入口方法 main(){ print('你好dart'); } void main(){ print('你好dart'); } 三数据类型 常用数据类型: Numbers(数值):
Dart是一个怎样的语言?
热门推荐
老梁的专栏
05-04 2万+
这几天看到一篇新闻 - 白兼容了?Google 正在为 Android 准备一个去 Java 化的 Dart 应用运行框架,对与新闻的标题和内容无力吐槽,不做评论。但是Google推出 sky 似乎证明了native的开发方式越来越向web方式靠近的趋势,最近比较火的要数 react-native 了,他们的原理是类似的,都是先构造一个 virtual dom tree,然后只更新发生变化的 dom
dartsdk-windows-x64-release.zip
01-27
dartsdk-windows-x64-release.zip 是一个用于开发 Dart 语言的软件开发工具包。Dart 是由 Google 开发的一种面向现代 Web 开发的编程语言,它可以用于构建高性能的 Web 应用程序。dartsdk-windows-x64-release.zip ...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【Vue面试专题】50+道经典Vue面试题详解! 22700
  • 企业微信 => 企业微信接入第三方应用(vue的H5) 第一阶段:授权登录 前端部分 15633
  • 【Vue3系列】 父组件调用子组件的方法-子组件向父组件传值 13677
  • Failed to load resource: the server responded with a status of 401 (UNAUTHORIZED) 解决token失效 401错误码 12054
  • 【Cocos creator】Cocos creator介绍和入门 11705

分类专栏

  • 【前端进阶】
  • 【Dart】入门基础到进阶 6篇
  • 【React基础到进阶&Hooks】 7篇
  • 【TypeScript入门到进阶】 5篇
  • 【Vue3从基础到进阶】 27篇
  • 【NuxtJS进阶】 7篇
  • 【数据可视化】 10篇
  • 【Uni-App小程序】 19篇
  • 【Vue2从基础到进阶】 64篇
  • 【Vue2后台管理项目】 9篇
  • 【Vue2中台项目】 4篇
  • 【Vue2移动端项目】 17篇
  • 【Jest自动化测试】 3篇
  • 【Webpack】 1篇
  • 【JavaScript基础到进阶】 33篇
  • 【算法与数据结构】 1篇
  • 【Node系列】 9篇
  • 【Koa系列】从入门到进阶 1篇
  • 【Egg系列】 3篇
  • 【MongoDB】 2篇
  • 【Java系列】 7篇
  • 【前端面试系列】 21篇
  • 【前端思维】 1篇
  • 【Cocos creator】 1篇
  • 【插件系列】 11篇
  • 【企业微信】 3篇
  • 【随想系列】 6篇
  • 【前端入门】 1篇
  • 【HTML5】 26篇
  • 【CSS】 25篇
  • 【JQuery+Ajax系列】 12篇
  • 【移动端开发】 7篇

最新评论

  • 企业微信 => 企业微信接入第三方应用(vue的H5) 第一阶段:授权登录 前端部分

    M5200Z: 大佬,怎么判断是否为企微环境呢

  • Vue3+ElementPlus+Koa2 全栈开发后台系统=>部门管理,创建-编辑-删除功能实现⑩

    麦田守望者MT: 你好,这个koa2接口服务是否能分享?

  • 【流程图】bpmn.js的使用-前端实现

    SANDY_DEV: 您好 第一个图是你做的吗

  • Vue3+ElementPlus+Koa2 全栈开发后台系统=>部门管理,创建-编辑-删除功能实现⑩

    不停喝水: nihao

  • Vue3+ElementPlus+Koa2 全栈开发后台系统=>部门管理,创建-编辑-删除功能实现⑩

    星辰同学wwq: 你好,我刚学这一块的知识,可以加好用探讨一下这个项目吗?我先装要重构这个项目,暂时还没啥头绪

大家在看

  • 会声会影2024破解版功能强大的视频编辑软件 303
  • 通过C#发送自定义的html格式邮件详解与示例 351
  • LDAP技术解析:打造安全、高效的企业数据架构 424
  • 深入理解Qt智能指针 261
  • 编译器(1)AI for compiler 700

最新文章

  • 【Koa】KOA 基础-掌握基于koa2搭建web应用的基础
  • 【Dart】=> [06] Dart初体验-类Class-构造函数-继承-mixin-异步编程-链式调用-泛型-异常
  • 【Dart】=> [05] Dart初体验-函数
2024年6篇
2023年7篇
2022年50篇
2021年112篇
2020年150篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不停喝水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司永湖网站关键词优化龙岗百度竞价同乐外贸网站制作石岩企业网站建设大芬企业网站建设龙华营销网站永湖英文网站建设南澳网页设计永湖网站改版双龙营销型网站建设荷坳seo惠州百度竞价包年推广深圳网站搭建吉祥seo网站推广丹竹头百姓网标王推广南山网站设计模板永湖百度竞价包年推广爱联百度标王坑梓百度seo石岩设计网站东莞SEO按效果付费沙井关键词排名包年推广盐田品牌网站设计丹竹头企业网站制作龙岗百搜标王塘坑网站搭建惠州企业网站设计光明至尊标王南山seo排名南山模板制作歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化