Flutter: Dart基本数据类型整理


前言

本篇整理笔者在学习Dart数据类型中所接触到的知识

首先,明确Dart中含有的数据类型如下

  • 数值型(int、double)
  • 字符串型(String)
  • 布尔值(Boolean)
  • 列表(List)
  • 集合(set)
  • 映射(map)
  • 符文(rune)
  • 符号(Symbol)

最后两种符文和符号并不常用,因此本篇不做介绍

一、基础数据类型

数值类型

Dart 中数值类型用于表示数字文字,Dart 中的数值类型分为整数和浮点数两种,整数值不大于64位, 具体取决于平台。

可以通过int/double显式声明一个数值类型

int a = 10;
int b = 0xDEADBEEF;
double c = 3.14;
double d = 1.42e5;

同时,Dart作为脚本类型语言,你也可以使用var类型声明,让编译器自行推断数据类型

var a = 88;
var b = 5.65;

字符串型

Dart 字符串是一组 UTF-16 单元序列,用于存储一些姓名地址等信息,并用单引号、双引号、三引号进行包裹。

可以通过String类型显式声明字符串

String str1 = 'hello';
String str2 = "hello";

字符串拼接方法

String str1 = 'hello';
String str2 = "hello";

String str3=str1+" "+str2
String str4="$str1 $str2"

String str5="${
      
      str1.toUpperCase()}"

$在这里表示取str1和str2的值,下面的方法和上面的方法产生的拼接效果一致,有点像ES6的语法

当然也可以通过var隐式声明,让程序自行将变量推断成字符串类型

var s1="111";

布尔值(Boolean)

Dart 只有字面量 true / false 是布尔类型,这两个对象都是编译时常量。

显式声明

bool a = true;
bool b = false;

隐式声明

var c = true;

列表(List)

其实 list 就是编程语言中常见的数据类型 Array(数组),但在 Dart 中用 List 对象表示数组。

可以通过隐式声明一个List,其中的数据类型可以不做限制

var l1=[1,"haha",true]

也可以通过声明来确定List中的数据类型,并进行添加

List<int> arr=[1,2,3];
List arr2=<int>[1,2,3,4];

arr.append(4);
arr2.append(5);

在前半部分声明或者后半部分声明都可以

也可以通过List.filled()方法生成新的List,需要注意的是,该种方法产生的list不可以更改长度,且默认要对所有位置上的元素进行初始化

List a = new List.filled(10, 1);
print(a);//[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

需要注意的是,在Flutter 2.x的版本中,仍然可以通过var ls = new List();类new关键字的方法对List进行初始化,但是在Flutter 3.x版本中,该特性已经得到废除,故本篇文章不做介绍

集合(set)

顾名思义,其实就是一组同类型数据的集合。在 Dart 中 Set 是一个元素唯一且无需的集合。 Dart 为 Set 提供了 Set 字面量和 Set 类型。

可以通过set关键字来定义一个集合

Set <String> cls = {
    
    "小王", "小杨"}; 

也可以通过var关键字隐式创建一个集合

var cls = {
    
    true,false};

需要注意的是,集合set不能进行空创建,因为空创建的格式会直接创建映射map,类似下方这种

var obj = {
    
    };

这里创建的是空Map对象

映射(map)

不严格地说,你可以把它看作为 Object / JSON 。 Map 是用来关联 keys 和 values 的对象。 keys 和 values 可以是任何类型的对象。在一个 Map 对象中一个 key 只能出现一次。 但是 value 可以出现多次。

var person = {
    
    
 // Key:    Value
   'name': '杨莹',
   'age': '18',
   'eat': 'true'
};

var nobleGases = {
    
    
 // Key:    Value
    2: 'react',
    10: 'vue',
    18: 'spring boot'
};

print(person);// {name: 杨莹, age: 18, eat: true}
print(nobleGases);// {2: helium, 10: neon, 18: argon}

Dart 会将 person 的类型推断为 Map<String, String>,nobleGases 的类型推断为 Map<int, String> 。 如果你尝试在上面的 map 中添加错误类型,那么分析器或者运行时会引发错误。

也可以通过Map构造函数进行创建

var obj = Map();
obj['name'] = '杨莹';
obj['age'] = 18;
print(obj);// {name: 杨莹, age: 18}

二、总结

以上是笔者关于Dart基本数据类型的整理,欢迎补充

猜你喜欢

转载自blog.csdn.net/qjyws/article/details/128772677
今日推荐