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 类型检测运算符

运算符 描述
as Typecast(也用于指定库前缀)
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); // 正确,该语句不执行,程序继续运行
发布了40 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37771142/article/details/104805279