Dart(4)-类型与运算

本文深入探讨了Dart编程语言的关键概念,包括对象、类型推断、null安全、泛型以及函数和变量的使用。同时,介绍了Dart的基本数据类型如int、double、String和bool,以及集合类型如List、Map和Set。此外,还涵盖了算术、关系、逻辑运算符,赋值运算符以及条件表达式。最后,讨论了?.空安全操作符、as类型转换、is/is!类型判断和..级联操作符等特殊操作符的用法。

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

一、重要概念

1.可以放在变量中的所有东西都是一个对象,每个对象都是一个的实例。数字、函数和 null对象。除了null,所有对象都继承自Object该类。

2.尽管 Dart 是强类型的,但类型注释是可选的,因为 Dart 可以推断类型。在上面的代码中,number 被推断为类型int

3.如果您启用null 安全,则变量不能包含,null除非您说它们可以。您可以通过在变量?类型的末尾放置一个问号 ( )来使变量可以为空。例如,一个类型的变量int?可能是一个整数,也可能是null. 如果你知道一个表达式永远不会计算为,null但 Dart 不同意,你可以添加!断言它不是空的(如果是,则抛出异常)。一个例子:int x = nullableButNotNullInt!

4.当您想明确表示允许任何类型时,请使用该类型Object? (如果您已启用 null 安全)、Object, 如果您必须将类型检查推迟到运行时 —可以考虑特殊类型dynamic

5.Dart 支持泛型类型,例如List<int>(整数列表)或List<Object>(任何类型的对象列表)。

6.Dart 支持顶级函数(例如main()),以及绑定到类或对象的函数(分别为静态实例方法)。您还可以在函数内创建函数(嵌套局部函数)。

7.同样,Dart 支持顶级变量,以及绑定到类或对象的变量(静态和实例变量)。实例变量有时称为字段属性

8.与Java,Dart不具备关键字publicprotectedprivate。如果标识符以下划线 ( _)开头,则它对其库是私有的。有关详细信息,请参阅 库和可见性

9.标识符可以以字母或下划线 ( _)开头,后跟这些字符加数字的任意组合。

10.Dart 有表达式(有运行时值)和 语句(没有)。例如,条件表达式 condition ? expr1 : expr2的值为expr1orexpr2。将其与没有价值的if-else 语句进行比较。一个语句通常包含一个或多个表达式,但一个表达式不能直接包含一个语句。

11.Dart 工具可以报告两种问题:警告错误。警告只是表明您的代码可能无法工作,但它们不会阻止您的程序执行。错误可以是编译时或运行时。编译时错误完全阻止代码执行;运行时错误会导致在代码执行时引发异常

二、数据类型

基本数据类型说明
int整型
double浮点型
numnum是int,double的基类
String字符类型
bool布尔

Dart中的基本数据类型中,基本和Java相似都有int,double,String等类型,区别是没有像short,float,char这样的小类型。所有类型都是对象,不需要像Java一样拆箱装箱的操作。例如:String age = 20.toString();数字也是对象,可以直接进行方法操作。

集合说明
List列表集合
Map键值对
Set无序集合

三、算术运算符

运算符说明
+
-
*
/
~/取整
%取余
++自增
--自减

四、关系运算符

运算符说明
==判断值或内容是否相等
!=判断是否不相等
>大于
<小于
>=大于等于
<=小于等于

五、逻辑运算符

位运算符说明
&
|
^异或
!取反
&&短路与
||短路或

六、赋值运算符(复合运算符)

运算符说明
+=int i = 2; print(i+=5); 输出:7
-=int i = 2; print(i-=5); 输出:-3
*=int i = 2; print(i*=5); 输出:10
/=double i= 2; print(i/=5);输出:0.4
%=int i = 2; print(i%=5); 输出:2
??=int i; i ??= 20; print(i); //如果变量没有赋值才进行赋值,否则不进行赋值

七、条件表达式

三目运算符

int i = 1;
int j = 2;
print(i < j ? 'A':'B');
//输出:A

??运算符,如果??前面的表达式为null,则使用??后面的值

int i=1;
int j = 2;
print(i ?? j);
//输出:1
int i;
int j = 2;
print(i ?? j);
//输出:2

八、其他操作符

?. 判空引用操作符

String str;
int len = str?.length; //如果没有?,会报错
print(len); //null

as类型转换

num a = 1;
int b = a as int;
print(b);

is/is! 类型判断

int b = 1;
print(b is int);

.. 级联操作符

final Set _elements = HashSet();
final List elements = _elements.toList()..sort();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值