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

本文总结了Dart语言的常用数据类型,包括num、int、double、String、bool、List和Map,并介绍了它们的特点和常用方法。Dart的语法融合了Python和Java的元素,对于熟悉这两种语言的开发者来说易于上手。例如,String类型的split、substring等方法,以及List的遍历和操作。此外,还探讨了dynamic、var和Object的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个我学习Flutter的第二天,因为学习Flutter的肯定得学习Dart语言,Dart是Flutter的主要开发语言。我的第一个感觉是Dart的语法好像是python和java的结合体,虽然他也有属于他自己的一些语法,但是整体来说,主要学了一门语言,大部分都是相通的,只是可能表达形式不一样。

Dart的常用数据类型

1.num

num:数值型变量,可以存储(负数,整数,浮点数等)。

num num1=-1.0;

num num2=2;

num num3=3.18;

print("num:$num1 num:$num2 num:$num3");

输出:

c24c22de9281

在这里插入图片描述

2.int、double类型

int int1=3;

double d1=1.68;

print("int:$int1 double:$d1");

输出:

c24c22de9281

在这里插入图片描述

num的方法:

num num1=-1.0;

print(num1.abs()); //求绝对值

print(num1.toInt()); //转换成int

print(num1.toDouble()); //转换成Double

3.String类型

1.可以用双引号或者单引号来赋值。

2.有两种字符串拼接方式,如下方代码。

String str1='字符串',str2="双引号"; //可以用双引号,或者单引号

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

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

print(str3)

print(str4)

输出:

c24c22de9281

在这里插入图片描述

字符串的常用方法:

String str5='常用数据类型,请空控制台输出输出';

print(str5.split('类型')); //字符串在类型处进行分割存入集合

print(str5.substring(1,5)); //字符串截取

print(str5.indexOf('类型')); //获取指定字符串位置

String str6 = 'https://www.baidu.com/';

print(str6.startsWith("https")); //检测字符串是否以指定的子字符串开始

print(str6.endsWith("/")); //检测字符串是否以/结尾

print(str6.toUpperCase()); //所有小写字母转化为大写

print(str6.toLowerCase()); //所有大写字母转化为小写

print(str6.length); //长度

print(str6.replaceFirst('t', 'p')); //只替换字符串里面的第一个出现的t

print(str6.replaceAll('t','p')); //替换数据,把字符串里面所有的t替换成p

输出:

c24c22de9281

在这里插入图片描述

4.bool类型

bool success=true,fail=false;

print(success);

print(fail);

print(success||fail); //true 或

print(success&&fail); //false 与

输出:

c24c22de9281

在这里插入图片描述

5.List类型

1.List类型添加数据的两种方式

List list=[1,2,3,4,'集合']; //初始化时添加元素

print(list);

List list3=[];

list3.add('list3'); //通过add方法添加元素

list3.addAll(list); //把list中数据添加到list3中

输出:

c24c22de9281

在这里插入图片描述

2.其他方法:

集合之间赋值:把list中的值传递给list2,关于dynamic,我下面会说明。

List list=[1,2,3,4,'集合']; //初始化时添加元素

print(list);

List list2=[];

list2=list;

print(list2);

==generate方法和Pythonrange方法类似。==

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

print(list4);

输出:

c24c22de9281

输出

3.List类型遍历的三种方法:

List list=[1,2,3,4,'集合'];

for(int i=0;i

print(list[i]);

}

for(var o in list){

print(o);

}

list.forEach((val) {

print(val);

});

4.常用方法

List list=[1,2,3,4,'集合']; //初始化时添加元素

print(list.remove('集合')); // 删除第一个匹配的数据

print(list.removeAt(3)); //删除第三个数据

list.removeRange(2, 3); //删除下标为2的数据

print(list);

print(list.indexOf(3)); //找到第一个满足条件的下标

list.insert(2, 'json'); //插入数据

print(list);

list.insertAll(2, ['bad','good']); //插入一个数组

print(list);

List list1=[1,2,3,4,6];

list1.retainWhere((value) => value % 2 == 0);

print(list); //删除不满足的条件

c24c22de9281

在这里插入图片描述

6.Map类型

1.Map类型的添加数据的两种方式

Map names={'xiaoming':'小明','xiaohong':'小红'};

print(names);

Map ages={};

ages['xiaoming']=16;

ages['xiaohong']=18;

print(ages);

输出:

c24c22de9281

在这里插入图片描述

2.Map类型的遍历

ages.forEach((key, value) {

print('$key,$value');

});

for (var key in ages.keys) {

print('$key ${ages[key]}');

}

输出:

3.Map类型之间传值

Map ages2=ages.map((key, value){

return MapEntry(key, value);

});

print(ages2);

c24c22de9281

在这里插入图片描述

7.dynamic、var、Object三者的区别

我学习视频老师是这样说的:

dynamic:是所有Dart对象的基础类型, 在大多数情况下,通常不直接使用它,

通过它定义的变量会关闭类型检查,这意味着 dynamic x = 'hal';x.foo();

这段代码静态类型检查不会报错,但是运行时会crash,因为x并没有foo()方法,所以建议大家在编程时不要直接使用dynamic;

var:是一个关键字,意思是“我不关心这里的类型是什么。”,系统会自动推断类型runtimeType;

Object:是Dart对象的基类,当你定义:Object o=xxx;时这时候系统会认为o是个对象,你可以调用o的toString()和hashCode()方法

因为Object提供了这些方法,但是如果你尝试调用o.foo()时,静态类型检查会进行报错;

综上不难看出dynamic与Object的最大的区别是在静态类型检查上;

1.个人认为dynamic,object两个和var的还是很容易区别的,如下图:

(其中runtimeType方法是来查看类型的)

dynamic和object:开始x和o1都是字符串类型,把他们赋值为int类型不会报错。因为==dynamic是所有Dart对象的基础类型,Object是Dart对象的基类(父类)==。

c24c22de9281

在这里插入图片描述

c24c22de9281

在这里插入图片描述

var:如果开始为字符串类型,赋值为int类型会爆红。因为==var第一次赋值会确定它的类型==。

c24c22de9281

在这里插入图片描述

2.dynamic,object的区别,dynamic与Object的最大的区别是在静态类型检查上

dynamic:可以看到x可以进行++操作。因为==dynamic不需要类型转换的原因是dynamic跳过编译类型检查==。

c24c22de9281

在这里插入图片描述

Object:进行o1++操作的话会爆红。==object没有做类型转换,不能进行直接的计算操作==

c24c22de9281

在这里插入图片描述

持续学习中。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值