Dart语言之常用数据类型

Dart 数据类型 Dart中支持以下数据类型: 常用数据类型: Numbers(数值): int double Strings(字符串) String Booleans(布尔) bool List(数组) 在Dart中,数组是列表对象,所以大多数人只是称它们为列表 Maps(字典) 通常来说,Map 是一个键值对相关的对象。 键和值可以是任何类型的对象。每个 键 只出现一次, 而一个值则可以出现多次 字符串类型 //1、字符串定义的几种方式 // var str1='this is str1'; // var 阅读详情

目录

前言

一、Dart概述

二、Dart常用数据类型

2.1、Dart知识体系

2.2、数字类型(num、int和double)

2.3、字符串(String)

2.4、布尔

2.5、集合之List

2.6、集合之Map

2.7、dynamic、var和Object的区别


前言

又有一段时间没有写东西了,很长时间不写,表明了两个点,一个是说明了自己的惰性,另一个就是说明了自己这段时间没有任何的提升,所以下午的时候我就在想晚上一定得写点东西,要么做技术复盘,要么写点新东西,然后就一直酝酿晚上回去该写点什么?最终决定写点基础的。因为现在市面上有些公司开始招聘Flutter开发相关的技术人员了,结合我之前写过的一篇《Flutter入门:开发环境与开发工具的准备》,那么当你环境准备好之后那肯定是要攻克开发语言了,所以接下来的几篇文章我会在我的Dart专栏里面跟大家分享一些Dart语言的基础知识,有了这些基础知识,你就可以去好好研究Flutter SDK了。

一、Dart概述

针对Dart语言的特点做以下几点说明:

1、Dart2.0:强类型的静态类型(编译时已知变量的类型)的语言,和Java、C#等比较类似,所有类型的检查都可以通过编译器来完成;

2、面向对象(OOP):这个特点类似的语言比较多:有Python、C++、Objective-C、Java、Kotlin、Swift、C#等等;

3、JIT&AOT:JIT(Just in Time)优点:即时编译,开发期间更快编译,更快的重载;缺点:在运行时将代码编译成机器码,给用户最直接的感受就是慢;AOT(Ahead Of Time)事前编译,release期间更快更流畅,典型的例子就是C和C++,它能够直接编译机器码即二进制代码,所以它的加载和执行速度是非常快的。你会发现在开发期间安装Flutter的时候会有一些卡顿,但是在release就是发布之后会变好,这种模式使得APP在发布之后能够以更快的速度运行。

二、Dart常用数据类型

2.1、Dart知识体系

这里用一张思维导图来展示Dart的整个知识体系

2.2、数字类型(num、int和double)

1、num:

Dart数字类型的父类,它既接受浮点类型,也接受整数类型。

num num1 = -1.0; //num是数字类型的父类
num num2 = 2; //num是数字类型的父类

2、int、double

num有两个子类,一个是int,一个是double,int类型只能接收整数,double类型是双精度

int int1 = 3; //子类一 int类型 只能接收整数
double d1 = 2.22; //子类二 双精度

在dart中数字类型如何进行类型转换呢?可以通过toInt()、toDouble等方法,还有一些常用的api,比如abs()、round()等等,我们通过一段代码来看一下它的运行结果:

///数字类型
  void _numType() {
    num num1 = -1.0; //num是数字类型的父类
    num num2 = 2; //num是数字类型的父类
    int int1 = 3; //子类一 int类型 只能接收整数
    double d1 = 2.22; //子类二 双精度
    print("num:$num1 num2:$num2 int1:$int1 d1:$d1");
    print(num1.abs()); //求绝对值
    print(num1.toInt()); //转换成int类型
    print(num1.toDouble()); //转成Double类型
    print(num1.toString()); //转成字符串
  }

运行结果如下:

2.3、字符串(String)

在dart中定义字符串可以用单引号也可以用双引号,一行可以定义一个字符串,也可以定义多个字符串,中间用逗号隔开:

String str1 = '字符串', str2 = "双引号字符串"; //字符串的定义

在dart中如何进行字符串拼接呢?答案很简单,可以直接使用加号“+”拼接,当然还有另外一种方法,在上面数字类型的讲解中也有使用到,我们可以使用"$"加上变量名去引用一个变量,这个变量可以是数字类型当然也可以是字符串类型:

String str3 = 'str1:$str1 str2:$str2'; //字符串拼接
String str4 = 'str1:' + str1 + "str2:" + str2; //字符串拼接

接着来看dart中字符串有哪些常用的api呢?字符串中的方法有很多,这里只介绍几种常用的,其它的方法大家可以自行学习,学习的方法也很简单,将鼠标移至字符串操作中的某个方法上,比如.substring()上面,然后Windows下按住ctrl键,Mac下按住command键,点进去就到了String这个类的源码当中,这里面有所有字符串操作的方法,每个方法都有对应的注释说明,看不懂英文的网上找个翻译软件跟着学习就行,下面介绍几种常用的:

//字符串截取,包含开始索引,不包含结束索引
String substring(int startIndex, [int endIndex]);
//获取一个字符串在另一个字符串中的位置
int indexOf(Pattern pattern, [int start]);
//判断一个字符串是否是以某种匹配规则开始的
bool startsWith(Pattern pattern, [int index = 0]);
//判断一个字符串是否包含某个匹配项
bool contains(Pattern other, [int startIndex = 0]);
//将某个字符串按照某种匹配规则进行拆分,并返回子字符串列表
List<String> split(Pattern pattern);
//将所有与from匹配的子字符串替换为replace,from和replace为方法的入参
String replaceAll(Pattern from, String replace);

其实这些方法和我们在java中使用的都是差不多的,我们再来写个方法进行实际查看一下结果,加深理解:

///字符串操作
  _stringType() {
    //字符串常用方法
    String str5 = '常用数据类型,请看控制台输出';
    print(str5.substring(1, 5)); //字符串截取
    print(str5.indexOf('请看'));
    print(str5.startsWith('常')); //是否以xx开始的
    print(str5.contains("数据"));
    print(str5.split(","));
    print(str5.replaceAll("类型","安奇"));
  }

结果如下:

2.4、布尔

Dart是强bool类型检查,只有bool类型的值是true,才被认为是true,对于bool类型来说,实际开发中用的比较多的就是逻辑运算,常用的也就是逻辑与和逻辑或的运算,这一块比较简单,写个方法验证一下即可:

///布尔类型,Dart是强bool类型检查,只有bool类型的值为true,才被认为是true
  _boolType() {
    bool success = true, fail = false;
    print(success);
    print(fail);
    print(success || fail); //true
    print(success && fail); //false
  }

结果如下:

2.5、集合之List

1、List集合的初始化

在Dart中定义集合使用List关键字,List<E>表明集合是个泛型,这里可以传入任何数据类型。

List集合可以使用“[]”进行初始化,例如:List list = [1,2,'测试']; 这种形式,这里没使用泛型所以中括号里面添加元素时既可以传入数字也可以传入字符串,如果需要指定泛型类型,例如:List<int> list1 = []; 这种形式下,添加元素的时候只能添加int类型的数据。如果我们把list集合直接赋值给list1集合会怎么样呢?可以思考一下,也就是 list1 = list; 这样,答案是会报错,如下所示:

原因是什么呢?是因为list这个集合我们并没有给它指定泛型,在dart里面有一个动态数据类型,也就是说list集合是动态数据类型的集合,我们将一个动态数据类型赋值给一个确定类型的集合时会报错,错误是动态类型集合不是确定类型集合的子类型,这一点需要注意。

除了上面的这种[]里面直接添加元素的方式初始化以外,我们还可以通过集合的add()或者addAll()方法进行初始化集合的操作,比如下面的代码:

List list = [1, 2, 3, '集合']; //初始化添加元素
List list3 = [];
list3.add('list3'); //通过add方法添加元素
list3.addAll(list);
print(list3);

结果就是:

2、常用方法

这里只介绍一个集合中常用到的方法——集合的生成函数,其它的函数大家点到源码里面自行学习吧:

//创建一个具有length位置的列表,并用创建的值填充它,范围为0——length-1的每个索引升序排列
List.generate(int length, E generator(int index));

什么意思呢?举个栗子:

List list4 = List.generate(3, (index) => index * 3);
print(list4);

结果如下:

这里对照着注释我们来做个说明:函数体中第一个参数length传入的值为3,说明我们生成的这个集合的长度为3,第二个参数实质上是一个方法体,“=>”符号在这里我们可以当成是一个箭头表达式,并且是方法体只包含一个表达式时才能这样使用,所以这里的第二个参数其实就是一个有返回值的函数,函数体是index(索引)乘以3,将得到的值进行返回,这个表达式也就等同于return index*3;的值,那么这样就很简单了,在函数说明的时候我们说了范围是0 - length-1的每个索引,那这里的索引值也就是0,1,2,然后将每个索引值乘以3得到的值依次为0,3,6,这样就得到了我们的集合[0,3,6]。

除了集合的生成函数外,集合还有很多经常用到的方法,我就不再进行详细的说明了,因为这些方法我们在Java中也经常使用,所以大家肯定是见其面知其意,下面大致列举几个:

//删除集合中的某个元素
bool remove(Object value);
//从集合中删除指定位置处的元素
E removeAt(int index);
//在集合的指定位置处插入某个对象
void insert(int index, E element);
//截取指定范围内的集合元素并返回成一个新的集合,入参的索引范围同样是包含左边不包含右边
List<E> sublist(int start, [int end]);
//查找集合中某个元素第一次出现的位置索引
int indexOf(E element, [int start = 0]);

3、List集合的遍历

这里介绍集合的常用的几种遍历方式:

第一种:没有语言之分的for循环方式:

for (int i = 0; i < list.length; i++) {
    print(list[i]);
}

第二种:for...in...,同样是for,但是表达式内部我们做一点修改,使用var关键字定义一个变量,然后使用in关键字在集合中进行遍历:

for (var o in list) {
   print(o);
}

第三种:forEach()循环,将函数应用于集合的每个元素,括号内传入的为集合的元素:

list.forEach((val) {
    print(val);
});

三种遍历方式得到的结果肯定都是一样的,如下所示:

2.6、集合之Map

1、Map集合的初始化

Map是将key和value相关联的对象,key和value都可以是任意类型的对象,并且key是唯一的,如果key重复,后面添加的key会替换前面的内容。

定义Map使用大括号“{}”,因为map是key-value的形式,所以添加元素的时候也是以键值对的形式进行添加,键和值中间使用冒号“:”进行分隔,比如:'a':'小明' 的形式,元素和元素之间使用逗号“,”分隔。除了这种初始化的方式外,我们还可以使用另外一种更加灵活的初始化的方式,首先可以初始化一个空的map,比如 Map map = {};  然后我们往这个空的map里面添加元素,我们使用中括号“[]”,中括号里面跟上元素的key,然后使用等号“=”连接,在等号右边为其赋值,比如 map['a']='小明';

这里简单的写个例子,这样看起来更加直观:

///Map初始化
Map names = {'xiaoming': '小明', "xiaohong": "小红"};
print(names);
Map ages = {};
ages['xiaoming'] = 12;
ages['xiaohong'] = 18;
print(ages);

结果如下:

2、常用api

//根据集合中的某个key,删除相关联的元素
V remove(Object key);
//判断集合中是否包含指定的key
bool containsKey(Object key);

3、Map的遍历

第一种:forEach

它的里面需要一个回调函数,回调函数里面会输出我们的key和value,代码也很简单:

///Map遍历方式
ages.forEach((k, v) {
    print('$k,$v');
});

通过$引用key或者value,我们就可以根据需要去使用它的键或者值了。

第二种:map()方法

我们可以调用Map集合的map()方法遍历生成一个新的map集合,这个方法接收一个回调函数,入参为key、value,函数内部必须接受一个return,也就是说它会返回一个新的map,这里通过MapEntry来返回之前Map里面每一项的元素,我这里将原map的key和value进行颠倒,那么就可以得到一个相反的集合,来看一下代码:

Map ages2 = ages.map((k, v) {
    return MapEntry(v, k);
});
print(ages2);

结果如下:

第三种:for循环

首先循环遍历map集合中所有的key,可以通过map.keys获取,它返回的是一个所有key值的数组(同样的也有map.values),然后我们就可以通过map[key]获取集合中的每一个元素了,代码如下:

for (var key in ages.keys) {
    print('$key , ${ages[key]}');
}

这里需要注意,我们使用字符串拼接的时候,如果需要调用方法的时候,就像上面ages[key]这样的时候,必须在$后面跟上大括号这种方式进行调用,结果如下:

2.7、dynamic、var和Object的区别

1、dynamic 

先上一段代码,看了之后再来说点具体的:

dynamic x = 'jarchie';
print(x.runtimeType);
print(x);
//x.foo(); //编译不会报错,运行时才会发现x并无此方法,会报错
x = 123;
print(x.runtimeType);
print(x);

结果如下:

它是dart里面的动态数据类型,我们使用这个关键字定义了一个变量,打印了它的运行时,并且打印了这个变量值,通过结果可以看出它的运行时是一个String,也就是说动态数据类型在编译时不知道你是什么类型,然后在运行的时候根据你后面的值去推测你是什么类型,它的好处是通过它可以定义任何的数据类型,缺点是它可以使dart的语法检查失效,为什么会失效呢?因为语法检查是静态语法检查,也就是在不运行代码的时候的语法检查,比如上面我注释掉的那行代码,编译的时候不会报错,当你运行的时候会报错:Class 'String' has no instance method 'foo',意思就是说这个变量并没有foo()这个方法,所以我们最好不要直接去使用它,为了避免带来一些不必要的错误。我们在代码中还更改了它的值为整型数据123,此时它的运行时也就变成了int类型。

2、var

var是一个关键字,不必关心它的类型是什么,系统也会自动推断它的数据类型,它和动态数据类型最大的区别是,当它的类型被确定之后,它是不允许修改的,就是说编译期语法检查都过不去,举个栗子:

    var a = "jarchie";
    print(a.runtimeType);
    print(a);
//    a=123; //下方报红,语法检查时有错误
    a = "anqi";

变量a的数据类型是已经确定为字符串了,不能再赋值为整型。

3、Object

Object是Dart里对象的基类,当我们将一个变量定义为Object类型的时候,系统就会认为这个变量就是Object类型,对于Object类型它里面有一些定义的方法,此时这个变量就可以调用相应的方法,它和动态数据类型最大的区别就是你不可以调用Object不存在的方法,编译器语法检查也是过不去的,因为它的数据类型也是确定的。

好了,本篇Dart的常用数据类型部分就写到这里,下一篇准备写Dart的面向对象,我也是希望自己能有时间去尽快的整理出来,实在抽不开身我也是没有办法啊,我太难了!要学的东西太多,学不动了。。。。。。大家加油,我先洗洗睡了!

Dart语言的数据类型 Dart的类型系统为开发人员提供了强大的工具,以确保代码的安全性和可维护性。通过理解基本数据类型、集合类型和特殊类型,开发人员可以更高效地编写出高质量的Dart代码。掌握这些数据类型的应用,将有助于你在Dart及其生态系统中游刃有余,特别是在移动应用开发中,提升你的编程能力和解决复杂问题的能力。希望本文能对你理解和使用Dart的数据类型有所帮助! 阅读详情

相关推荐

Dart语言之数据类型

数据类型、Stream

m0_60264901的博客 898

Dart 数据类型,看这篇就够了!

前言 Dart 支持以下数据类型: 数字(number) 字符串(string) 布尔值(boolean) 列表(list) 集合(set) 映射(map) 符文(rune) 符号(Symbol) 数字类型 Dart 中数字类型用于表示数字文字,Dart 中的数字类型分为整数和双精度数两种,整数值不大于64位, 具体取决于平台。 整数(int): 表示非小数值,即没有小数点的数值。 // 声明...

🏆 前端领域优质创作者 1万+

Dart编程:变量、数据类型与列表管理

本文深入探讨了Dart语言中变量、数据类型及列表管理的核心概念。从基本的变量声明与使用,到布尔值的处理,再到列表的创建、初始化和操作,文章详细介绍了Dart中相关的语法和函数用法,同时提供了丰富的代码示例,帮助读者更好地理解和运用这些编程技巧。

weixin_33814090的博客 414

Dart 基本数据类型

【代码】Dart 基本数据类型。

Steve_XiaoHai的博客 700

哨兵一号burst数据的下载和处理

在Sentinel - 1数据处理领域,其基本流程起始于从(ASF)下载原始压缩文件。这些文件规模颇为可观,常规大小约4GB,而部分数据的原文件甚至已攀升至7GB,对存储空间提出了严苛要求。从影像构成来看,每景Sentinel - 1影像由三个干涉宽幅(IW)模式子带组成,每个IW一般包含9个脉冲串(burst)。然而,在实际研究中,我们所关注的研究区域往往仅占据其中寥寥几个burst。

kangkangluoluo的博客 1965

Docker拉取ubuntu22.04镜像使用ROS2 humble及仿真工具可视化进行导航

Docker中安装Ubun22以及ROS,gazebo可视化等

lovebc的博客 1676

Dart语法重点学习—语言特性与常用数据类型

语言特性 Dart所有的东西都是对象, 即使是数字numbers、函数function、null也都是对象,所有的对象都继承自Object类。 Dart动态类型语言, 尽量给变量定义一个类型,会更安全,没有显示定义类型的变量在 debug 模式下会类型会是 dynamic(动态的)。 Dart中的类和接口是统一的,类即接口,你可以继承一个类,也可以实现一个类(接口),自然也包含了良好的面向对象和并发编程的支持。 Dart 没有 public、private、protected 这些关键字,变量名以"_"开

u012869941的博客 416

AI时代,程序员何去何从?别慌,看完这篇你就明白了

AI时代程序员的发展方向 摘要:随着AI代码助手的普及,程序员行业面临变革。本文通过实际案例展示AI写代码的能力与局限:AI能生成基础功能代码(如RESTful API、数据处理脚本),但缺乏业务理解、系统设计和复杂逻辑处理能力。程序员的核心价值在于需求分析、架构设计、性能优化等高层能力。未来程序员应: 掌握AI工具提升效率 专注于创新和架构设计 培养业务理解能力 持续学习新技术 AI不会取代程序员,但会淘汰不会使用AI的程序员。建议开发者拥抱AI工具,将其作为助手而非威胁,聚焦高价值工作。

yunque_xianguang的博客 908

Flutter开发之Dart的数据类型01

原文博客地址: Flutter开发之Dart的数据类型01 这几篇文章都是在学习Dart过程中所记录的学习笔记, 都是一些基础知识, 几乎没什么技术含量, 主要是方便后期使用的时候方便查阅 我写的Flutter和Dart语法系列相关的文章, 有兴趣的可参考随便看看 Dart数据类型 Dart内置的数据类型中, 支持以下几种数据类型 numbers(数字) strings(字符串) boo...

RunningKing 1445

CPRI原理及应用--基本原理

本文主要介绍CPRI的基本原理,包括CPRI的发展历程、CPRI基本协议、速率、帧结构、时延模型等

u014035968的博客 2万+

YOLOv11低照度增强主干网络PE-YOLO:原理与完整实现教程

编码器部分# 解码器部分self.dec_conv2 = nn.Conv2d(512, 128, 3, padding=1) # 跳跃连接self.dec_conv3 = nn.Conv2d(256, 64, 3, padding=1) # 跳跃连接self.dec_conv4 = nn.Conv2d(128, 32, 3, padding=1) # 跳跃连接# 编码路径# 解码路径(带跳跃连接)

FJN110的博客 724

Flutter入门(一)------Dart语言

一.Dart 重要的概念如下: 1.所有的东西都是对象,无论是变量、数字、函数等都是对象 所有的对象都是类的实例。所有的对象都继承自内置的Object类。这点类似于 Java 语言“ 切皆为对象” 。 2.程序中指定数据类型使得程序合理地分配内存空间,并帮助编绎器进行语法检查。但是,指定类型不 必须的 Dart 言是弱数据类型。 3.Dart代码在运行前解析。指定数据类型...

鹿林深的博客 383

yolov26改进 | 检测头篇 | 利用渐近特征金字塔网络AFPN改进yolov26检测头融合P2网络结构(让小目标无所遁形,全网独家首发)

本文介绍一种基于AFPN渐近特征金字塔网络改进的YOLOv26四检测头Detect_FPN。AFPN通过逐级融合底层细节、中层结构与高层语义特征,缩小不同尺度特征之间的语义差距,减少直接融合带来的信息冲突,使检测头获得更稳定、更充分的多尺度表达。本文进一步增加高分辨率小目标检测分支,强化对微小目标、密集目标和复杂背景目标的感知能力,适合工业缺陷、遥感及无人机等场景。文中将展示基础模型与改进模型的训练对比结果,并提供完整代码、配置文件、模块注册方法及Codex修改思路,方便直接复现和二次创新。

Snu77的博客 371

Dart学习笔记三:数据类型

目录 Dart数据类型概览 字符串类型 字符串定义 字符串拼接 数值类型 布尔类型 List(数组/集合) Map(字典) Dart判断数据类型 Dart数据类型概览 常用数据类型: Numbers(数值): int double Strings(字符串) String Booleans(布尔) bool List(数组) 在...

zeng280091932的博客 400

STM32入门教程:自动门控制

通过这个简单的示例,我们展示了如何使用STM32微控制器来实现一个简单的自动门控制系统。如果有物体靠近门口,我们会改变doorState的值,并使用controlServoMotor函数来控制舵机电机的转动。具体的引脚连接可以根据您的具体硬件来定,例如将红外传感器的输出引脚连接到GPIOA_PIN0引脚。同样,具体的引脚连接可以根据您的具体硬件来定,例如将舵机的控制引脚连接到GPIOA_PIN1引脚。首先,我们需要包含必要的库文件和引用。然后,我们需要定义一些函数来处理红外传感器的输入和舵机电机的输出。

m0_75244442的博客 577

QT入门开发一个时钟

本文讲述了时钟开发的具体过程以及代码。 涉及到一下几个知识点: 1. 定时器使用 2. 本地时间获取 3. resource资源读取 4. 图片绘制 5. 图片按照中心旋转 6. sin或者cos角度计算。

啊渊的专栏 5145

dart 基本语法

finally - 用于try-catch-finally语句中,无论是否发生异常,都将执行的代码块。await - 用于暂停异步函数的执行,直到等待某个未完成的Future完成。try - 用于try-catch-finally语句中,尝试执行的代码块。赋值运算符:=, +=, -=, *=, /=, %=,?where(): 过滤集合中的元素,返回符合条件的元素集合。位运算符:&, |, ^, ~, >>, >关系运算符:==,!

DingDong-IT 926

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Dart语言入门(二)

我们上一篇博客讲了Dart的安装以及在InteIIiJ IDEA搭建Dart的开发环境的相关介绍,接下来介绍Dart语言的相关知识。 变量与基本数据类型 在Dart里,变量声明使用var关键字,如下图所示: var name='tom'; 在Dart语言里一切皆为对象,如果没有将变量初始化,那它的默认值是null。以下代码示例判断未初始化的变量是否为null: var name; i...

wen_haha的博客 1589

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

dart和python混编_Flutter学习第二天:Dart常用数据类型以及方法大总结,满满的干货,对于学过Python和java的太友好了?...

这个我学习Flutter的第二天,因为学习Flutter的肯定得学习Dart语言,Dart是Flutter的主要开发语言。我的第一个感觉是Dart的语法好像是python和java的结合体,虽然他也有属于他自己的一些语法,但是整体来说,主要学了一门语言,大部分都是相通的,只是可能表达形式不一样。Dart的常用数据类型1.numnum:数值型变量,可以存储(负数,整数,浮点数等)。num num1=...

weixin_42166261的博客 878

Dart-数据类型

var,const,final var定义一个任意类型的变量,可以赋任何类型的值。 var a = 10; a = 'hello world!'; a = true; final定义只能赋一次值的常量。 final a = 10; a = 2; //出错 final不要求一定要在定义的时候初始化。 final a; a = 10; //正确 const定义一个常量,必须在定义时初始化,并且之...

solo_jm的博客 533

Dart语法上

Flutter之Dart,练习来源于B站视频

Holothurian 1567

学习Flutter从Dart开始系列(一)之基本数据类型

1 Dart简介 Dart是一种开源的通用编程语言。它最初由Google开发用来代替前端的JS,后来随着JS的迅猛发展,Dart的位置就很尴尬,也变得不温不火。直到Flutter的出现再一次拯救Dart。作为当下最火的跨平台框架,Flutter天生支持Dart(毕竟还是自家的产品),Dart的身价也就水涨船高,它与JS有很多类似的地方,但是也有一些独有的特色,就让我们跟随这一系列的文章走进Dart的世界。 2 变量声明 var 类似于JavaScript,Dart也使用 var 来声明变量,但是Dart中

QStack的博客 726

Dart语言学习

1.变量名称必须由数字、字母、下划线和美元符($)组成2.标识符开头不能是数字3.标识符不能是保留字和关键字4.变量的名字是区分大小写的如: age和Age是不同的变量。在实际的运用中,也建议,不要用一个单词大小写区分两个变量5.标识符(变量名称)一定要见名思意 :变量名称建议用名词,方法名称建议用动词Dart中常用的定义常量的方法:const:值不变 一开始就得赋值。final :可以开始不赋值 只能赋一次 ;具有const的编译时常量的特性;运行时常量(惰性初始化),即在运行时第一次使用前才初始化。特点

chenyiluo94的博客 866

dart学习 之旅

https://dart.dev/guides/language/language-tour

Leove的专栏 135
上一篇: Flutter入门:开发环境与开发工具的准备
下一篇: Android自定义View之通用Dialog
江湖客陆仁甲
博客等级 码龄10年 179粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值