【Flutter】入门Dart语言:初步了解内建类型

news2024/9/22 7:39:05

文章目录

    • 一、概述
      • 1.为什么叫内建类型?
      • 2.Dart的内建类型有哪些?
    • 二、内建类型详解
      • 1.num
      • 2.int
      • 3.double
      • 4.String
        • 5.bool
      • 6.List
      • 7.Map
      • 8.Function
    • 三、总结

一、概述

"The greatest glory in living lies not in never falling, but in rising every time we fall." - Nelson Mandela

"生活中最大的荣耀不在于从不跌倒,而在于每次跌倒后都能重新站起。" - 纳尔逊·曼德拉

img

1.为什么叫内建类型?

“内建类型”(built-in types)这个说法是因为 Dart 语言自带了一些数据类型,比如 intdoubleString 等,用户不需要再定义就可以直接使用,因此这些类型被称为内建类型。

2.Dart的内建类型有哪些?

Dart 内建类型有:

  • num:数字类型的父类型,包括 intdouble
  • int:整数类型。
  • double:浮点数类型。
  • String:字符串类型。
  • bool:布尔类型。
  • List:数组类型。
  • Map:字典类型。
  • Function:函数类型。

此外,Dart 还有一些特殊的内建类型,如 dynamicvarObject 等。

二、内建类型详解

1.num

num 是 Dart 语言中的父类型,用来表示数字类型。它是 intdouble 的父类型,可以表示整数和浮点数。

下面是一个简单的示例:

num a = 10;
num b = 3.14;

print(a + b);  // 13.14

在上面的代码中,a 被声明为数字类型 num,并赋值为整数 10。b 也被声明为数字类型 num,并赋值为浮点数 3.14。然后,它们两个被相加,结果为 13.14。

因为 numintdouble 的父类型,所以它可以容纳两种数字类型,并且可以被强制转换为 intdouble 类型。

num c = 10;
int d = c;
print(d);  // 10

num e = 3.14;
double f = e;
print(f);  // 3.14

在上面的代码中,变量 c 被赋值为整数 10,并强制转换为整数类型 int,赋值给变量 d。同样,变量 e 被赋值为浮点数 3.14,并强制转换为浮点数类型 double,赋值给变量 f

2.int

int 是 Dart 语言中的整数类型。它用来表示整数,如 0、1、2、3 等。

下面是一个简单的示例:

int a = 10;
int b = 20;

print(a + b);  // 30

在上面的代码中,ab 都被声明为整数类型 int,并分别赋值为 10 和 20。然后,它们两个被相加,结果为 30。

注意:整数类型 int 不能表示小数,如果需要表示小数,则应使用浮点数类型 double

此外,Dart 中的整数类型 int 支持各种数学运算,如加减乘除、取模等。

下面是一个简单的示例:

int a = 10;
int b = 3;

print(a + b);  // 13
print(a - b);  // 7
print(a * b);  // 30
print(a / b);  // 3
print(a % b);  // 1

在上面的代码中,变量 ab 都被声明为整数类型 int,分别赋值为 10 和 3。然后,它们进行加减乘除和取模等数学运算。

3.double

double 是 Dart 语言中的浮点数类型。它用来表示浮点数,如 3.14、1.23 等。

下面是一个简单的示例:

double a = 10.5;
double b = 20.3;

print(a + b);  // 30.8

在上面的代码中,ab 都被声明为浮点数类型 double,并分别赋值为 10.5 和 20.3。然后,它们两个被相加,结果为 30.8。

注意:浮点数类型 double 的精度有限,不能精确地表示所有小数,而且在一些特殊情况下,可能导致精度问题。

此外,Dart 中的浮点数类型 double 也支持各种数学运算,如加减乘除等。

下面是一个简单的示例:

double a = 10.5;
double b = 3.14;

print(a + b);  // 13.64
print(a - b);  // 7.36
print(a * b);  // 32.93
print(a / b);  // 3.33

在上面的代码中,变量 ab 都被声明为浮点数类型 double,分别赋值为 10.5 和 3.14。然后,它们进行加减乘除等数学运算。

4.String

String 是 Dart 语言中的字符串类型。它用来表示文本字符串,如 “Hello World”、“Dart is Fun” 等。

下面是一个简单的示例:

String name = "John Doe";

print("Hello, " + name);  // Hello, John Doe

在上面的代码中,变量 name 被声明为字符串类型 String,并赋值为 “John Doe”。然后,它和字符串 "Hello, " 进行拼接,结果为 “Hello, John Doe”。

Dart 中的字符串类型 String 支持各种字符串操作,如拼接、切片、搜索、替换等。

下面是一个简单的示例:

String s1 = "Hello";
String s2 = "World";

print(s1 + " " + s2);  // Hello World
print(s1.length);       // 5
print(s2.substring(0, 4));  // Worl
print(s1.replaceAll("l", "x"));  // Hexxo

在上面的代码中,变量 s1s2 都被声明为字符串类型 String,分别赋值为 “Hello” 和 “World”。然后,它们进行拼接、求长度、切片、替换等字符串操作。

5.bool

bool 是 Dart 语言中的布尔类型,用来表示真假两种状态。在 Dart 中,只有两个值可以表示布尔类型:truefalse

下面是一个简单的示例:

bool isTrue = true;
bool isFalse = false;

print(isTrue);  // true
print(isFalse); // false

在上面的代码中,变量 isTrueisFalse 都被声明为布尔类型 bool,分别赋值为 truefalse

布尔类型主要用来在条件判断语句(ifswitchwhile 等)中,作为判断条件,决定是否执行特定代码。

下面是一个简单的示例:

bool isTrue = true;

if (isTrue) {
  print("This is true.");  // This is true.
} else {
  print("This is false.");
}

在上面的代码中,变量 isTrue 被声明为布尔类型 bool,并赋值为 true。然后,它作为判断条件,决定执行哪一个分支。如果 isTruetrue,则执行第一个分支,并输出 “This is true.”。

6.List

List 是 Dart 语言中的列表类型,也称为数组。它是一种有序的元素集合,可以存储任何类型的数据,包括数字、字符串、布尔值等。

创建一个列表需要使用方括号 [],并在方括号内使用逗号 , 分隔元素。

下面是一个简单的示例:

List<String> names = ["Alice", "Bob", "Charlie"];

print(names);  // [Alice, Bob, Charlie]

在上面的代码中,变量 names 被声明为列表类型 List<String>,表示这是一个字符串元素的列表。然后,列表中的三个字符串元素被分别初始化为 “Alice”、“Bob”、“Charlie”。

列表的元素可以使用下标访问,下标从 0 开始。

下面是一个简单的示例:

List<String> names = ["Alice", "Bob", "Charlie"];

print(names[0]);  // Alice
print(names[1]);  // Bob
print(names[2]);  // Charlie

在上面的代码中,列表 names 中的每一个元素都可以通过下标访问。例如,通过 names[0] 可以访问列表中的第一个元素 “Alice”。

一个列表的元素可以是不同类型的。Dart 是一种动态类型语言,不需要在创建列表时明确指定列表元素的类型。因此,您可以在同一列表中存储多种类型的元素。

List mixedList = [1, "Hello", true];

print(mixedList[0]);  // 1
print(mixedList[1]);  // Hello
print(mixedList[2]);  // true

在上面的代码中,列表 mixedList 中的三个元素分别是整数、字符串和布尔值。它们可以通过下标访问,如上面代码中所示。

7.Map

Map 是 Dart 中一种用于存储键/值对的数据结构。键和值都可以是任何类型的值,键是唯一的。您可以通过键来访问与之对应的值。

这是一个示例:

var student = {
  'name': 'John Doe',
  'age': 30,
  'isGraduate': true
};

print(student['name']);  // John Doe
print(student['age']);  // 30
print(student['isGraduate']);  // true

在上面的代码中,我们创建了一个名为 student 的 Map,并存储了三个键/值对。您可以通过访问字典中的键来访问与之对应的值。

8.Function

Function 是 Dart 中一种代码块的类型,可以作为变量进行赋值、作为参数传递给其他函数、作为返回值返回给调用者。

// 定义一个函数
String greet(String name) {
  return 'Hello, $name!';
}

// 调用函数
print(greet('John Doe'));  // Hello, John Doe!

// 将函数赋值给变量
var greetFunction = greet;
print(greetFunction('Jane Doe'));  // Hello, Jane Doe!

// 作为参数传递给其他函数
void printGreeting(String name, String Function(String) greet) {
  print(greet(name));
}
printGreeting('John Doe', greet);  // Hello, John Doe!

在上面的代码中,我们定义了一个名为 greet 的函数,该函数接受一个字符串类型的参数 name,并返回一个字符串类型的值。我们还将该函数赋值给了变量 greetFunction,并使用它作为参数传递给了另一个函数 printGreeting

三、总结

这次我们学习了Dart的内建类型,这些类型在我们的代码中是会被经常用到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享111个HTML体育竞技模板,总有一款适合您

分享111个HTML体育竞技模板&#xff0c;总有一款适合您 111个HTML体育竞技模板下载链接&#xff1a;https://pan.baidu.com/s/1JmjlNVApPLVWnSEN5VlILQ?pwd5kzl 提取码&#xff1a;5kzl Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 响应式户外攀岩运动宣传…

【亲测有效】错误代码0x904,远程桌面连接异常终端问题

【亲测有效】错误代码0x904&#xff0c;远程桌面连接异常终端问题一、问题情况二、解决办法1.打开防火墙&#xff0c;如图&#xff0c;点击“允许应用或功能通过Windows”2.点击“允许其他应用”3.点击“浏览”4.在如下目录找到“mstsc.exe”添加5.点击“添加”6.勾选“专用”和…

[软件工程导论(第六版)]第5章 总体设计(课后习题详解)

文章目录1. 为每种类型的模块耦合举一个具体例子。2. 为每种类型的模块内聚举一个具体例子。3. 用面向数据流的方法设计下列系统的软件结构。4. 美国某大学共有200名教师&#xff0c;校方与教师工会刚刚签订一项协议。按照协议&#xff0c;所有年工资超过$26000&#xff08;含$…

电商搜索和推荐场景下的MLOps实践

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2023年1月份热门报告合集ChatGPT的发展历程、原理、技术架构及未来方向《ChatGPT&#xff1a;真格基金分享.pdf》2023年AIGC发展趋势报告&#xff1a;人工智能的下一时代2023年…

图的基本概念和性质

目录一、图的引入1.引言2.不同类型的图3.无序对和无序积4.什么是图二、图的表示1.图的表示2.邻接矩阵3.邻接点与邻接边4.一些简单的特殊图三、图的分类1.按边有无方向分类2.按有无平行边分类3.按有无权值分类4.综合分类方法四、子图和补图1.各类子图2.完全图3.补图4.补图的邻接…

WSL(ubuntu2204)xfce4安装中文环境和fcitx5框架及中文输入法

安装中文语言包 sudo apt install language-pack-zh-hans 配置中文显示 首先运行如下命令配置 locale $ sudo vi /etc/locale.gen 找到 *zh_CN.UTF-8 UTF-8* 并取消注释&#xff0c;然后保存并退出。 locale.gen... # zh_CN.GBK GBK zh_CN.UTF-8 UTF-8 # zh_HK BIG5-HKS…

【C语言刷题】倒置字符串

解题思路与过程&#x1f4fd;️解题思路&#x1f4fd;️解题过程&#x1f527;1.输入&#x1f527;2.设计逆序函数&#x1f527;3.逆序整个字符串&#x1f527;4.逆序每个单词&#x1f4fd;️源码&#x1f4f7;先来看题&#x1f447;&#x1f4fd;️解题思路 &#x1f534; 首先…

【验证码的识别】—— 图形验证码的识别

前言 &#xff08;结尾有彩蛋欧&#xff09; 目前&#xff0c;许多网站采取各种各样的措施来反爬虫&#xff0c;其中一个措施便是使用验证码。随着技术的发展&#xff0c;验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码&#xff0c;后来加入了英文字母和混…

RK356x U-Boot研究所(命令篇)3.6 fdt命令的用法

平台U-Boot 版本Linux SDK 版本RK356x2017.09v1.2.3文章目录 一、fdt命令的配置二、fdt命令的定义三、fdt命令的用法3.1 fdt list3.2 fdt rm3.3 fdt set一、fdt命令的配置 .config配置文件需要有以下配置: rk3568_defconfig默认已使能。 二、fdt命令的定义 usb命令定义在cm…

169、【动态规划】leetcode ——123. 买卖股票的最佳时机 III:二维数组+一维数组 (C++版本)

题目描述 原题链接&#xff1a;123. 买卖股票的最佳时机 III 解题思路 &#xff08;1&#xff09;二维dp数组 动态规划五步曲&#xff1a; &#xff08;1&#xff09;dp数组含义&#xff1a; dp[i][0]&#xff0c;表示无操作。主要由四个状态来表示四种操作。dp[i][1]&…

博客系统web自动化测试

目录 一、项目简介 二、测试用例 三、测试过程 3.1 环境搭建 3.2 编写代码 3.2.1 博客登陆页面测试 3.2.2 博客列表页面测试 3.2.3 博客详情页面测试 3.2.4 博客编辑页面测试 四、测试评估 一、项目简介 本项目是一个简易的个人博客系统&#xff0c;用户可以在登陆后…

W800开发板|SDK| HLK-W800-KIT-PRO|工具链|本地命令行编译|Windows11|WSL|(5)、海凌科W800开发板命令行编译指南

概况 海凌科W800开发板&#xff08;HLK-W800-KIT&#xff09;是海凌科电子面向开发者针对联盛德W800 芯片推出的一款多功能开发板。全功能版本与联盛德W800开发板相比&#xff0c;增加了温湿度传感器、RGB 灯以及音频解码器、功放可以直接在开发版验证功能。联盛德W800的csdk也…

java虚拟机内存分布

java虚拟机内存分布 Java虚拟机在执行java程序的过程中会把它所管理的内存划分为如下若干个不同的数据区域。 1.程序计数器 程序计数器是线程私有的&#xff0c;它占用的空间相对较小&#xff0c;用来记录当前线程字节码执行到哪一步。字节码解释器通过改变这个计数器的值来获…

Portraiture2023最新版人像图像后期处理软件

2023全新发布Portraiture 4是专注于图像后期处理软件研发的 Imagenomic, LLC产品之一&#xff0c;在摄影爱好者中有点影响力。Portraiture可以将繁琐复杂的人像磨皮操作极致简化&#xff0c;不论是普通爱好者或专业后期处理人员&#xff0c;均能一键完成。凭借优秀的AI算法和多…

uniapp 悬浮窗(应用内、无需授权) Ba-FloatWindow2

简介&#xff08;下载地址&#xff09; Ba-FloatWindow2 是一款应用内并且无需授权的悬浮窗插件。支持多种拖动&#xff1b;自定义位置、大小&#xff1b;支持动态修改。 支持自动定义起始位置支持自定义悬浮窗大小支持贴边显示支持多种拖动方效果&#xff1a;不可拖动、任意…

python--matplotlib(1)

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库&#xff0c;需要numpy库的支持&#xff0c;支持用户方便设计出二维、三维数据的图形显示。 正文 1.arange函数 arange函数需要三个参数&#xff0c;分别为起始点、终止…

MyBatisPlus ---- 多数据源

MyBatisPlus ---- 多数据源1. 创建数据库及表2. 引入依赖3. 配置多数据源4. 创建用户service5. 创建商品service6. 测试适用于多种场景&#xff1a;纯粹多库、读写分离、一主多从、混合模式等 目前我们就来模拟一个纯粹多库的一个场景&#xff0c;其他场景类似 场景说明&#x…

一文了解Hotspot虚拟机下JAVA对象从创建到回收的生命周期

Java虚拟机是Java的核心和基础&#xff0c;他是Java编译器和操作系统平台之间处理器&#xff0c;能实现跨平台运行Java程序。本文主要讲解的是虚拟机如何管理对象&#xff0c;即Java对象在JVM虚拟机中被创建到回收的流程 Java对象从创建到回收的生命周期对象创建流程1.类加载检…

MyBatis 的一级、二级缓存机制

目录标题缓存什么是缓存为什么使用缓存什么样的数据能使用缓存&#xff0c;什么样的数据不能使用适用于缓存不适用于缓存MyBatis 一级缓存、二级缓存关系1. 一级缓存1.1 什么是一级缓存mybatis1.2 一级缓存配置1.3 什么情况下会命中一级缓存mybatis清除一级缓存的几种方法1.4 内…

Delphi 10.4.2使用传统代码提示方案(auto complete)(转)

Delphi 10.4重点是实现了LSP&#xff0c;但现在最新的10.4.2还是不成熟&#xff0c;无法满足日常需要&#xff0c;不过没关系&#xff0c;可以设置为原有的方案&#xff0c;如下图&#xff1a;具体操作&#xff1a;Tools->Options->Editor->language->Code Insight…