Dart 语言学习 02 变量和运算符

Dart 语言学习 02

Author : ScorpioDong

1. Dart 变量

变量是“存储器中的命名空间”,它用于存储值。变量的名字也就是标识符,遵守标识符的一些规则,建议变量使用小驼峰命名法。
和其他的语言不同的是,Dart所有的变量存储的都是值的引用,而不是值本身,也可以说Dart所有变量都是引用数据类型。

1.1 变量的声明

Dart语言中的变量有以下声明方式:

var name = "dart";
String gender = "male";
String str;
str = "hello";
dynamic b = 1;
b = "abc";
  • 可以指定数据类型声明变量,声明时可以直接初始化,也可以暂时不初始化。
  • dynamic 修饰的变量其数据类型是动态调整的,也就是该变量可以存储任何类型的数据值。【效率较低】
  • 可以使用var关键字来定义变量
    • var定义变量时,如果赋予了变量初始值,编译器自动确定其变量类型,并且确定后无法更改。
    • var定义变量时,如果未赋予变量初始值,则编译器会认定该变量为dynamic修饰,也就是动态数据类型。
// var定义变量时赋予了变量初始值

var a = 10; // 认定变量数据类型为int类型
a = 20;  // 正确,类型一致
a = "abc"; // 错误, 类型不一致

// var定义变量时未赋予变量初始值

var b;  // 认定变量是dynamic修饰的
b = 10; // 正确,变量为动态数据类型
b = "def"; // 正确,变量为动态数据类型

1.2 变量默认值

Dart是一门面向对象的语言,其认为所有的事物都是对象。

Dart中所有的数据类型的变量在未初始化时,其默认值都是null,【包括数字类型变量】,Dart语言中认为数字也是对象。

1.3 final 和 const

final和const关键字用于声明常量。Dart语言中final和const关键字用于声明值不可更改的常量。

final 和 const 的区别

  • final是运行时常量,常量的值在运行时才被确定。
  • const是编译时常量,常量的值在编译时就已经确定。
final a = 10;
const b = "abc";

final int c = 12;
const String d = "dart";

2. Dart 运算符

2.1 算数运算符

运算符描述
+
-
*
/
~/整除
%取余
++自增
--自减

2.2 比较运算符

运算符描述
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

2.3 逻辑运算符

运算符描述
&&逻辑与
||逻辑或
!逻辑非

2.3 按位运算符

运算符描述
&按位与
|按位或
^按位异或
~按位取反
>>右移
<<左移

2.4 赋值运算符

运算符
=
+=
-=
*=
/=
~=
<<=
>>=
&=
|=
^=

2.5 类型检测运算符

运算符描述
asTypecast(也用于指定库前缀)
is如果对象具有指定的类型,则为True
is!如果对象具有指定的类型,则返回false

2.6 条件表达式

  • condition ? expr1 : expr2 如果condition为true,则执行expr1并返回其值,否则执行expr2并返回其值
  • expr1 ?? expr2 如果expr1不是null,返回expr1的值,否则执行expr2并返回其值

2.7 级联运算符

级联运算符(..),允许对同一对象进行多项操作。

Set<int> set = {};
set..add(1)
  ..add(2)
  ..add(3)
  ..add(4);

其代码等效于

Set<int> set = {};
set.add(1);
set.add(2);
set.add(3);
set.add(4);

严格来说,级联的“双点”符号不是运算符。它只是Dart语法的一部分

2.8 其他运算符

运算符名称描述
()函数调用表示函数调用
[]List访问引用列表中指定索引处的值
.成员访问访问对象的成员属性
?.条件成员访问在不明确对象是否存在的情况下使用 ?. 访问对象的成员
Set<int> set = null;
set.add(1);  // 错误,NoSuchMethodError
set?.add(1); // 正确,该语句不执行,程序继续运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值