爱收集资源网

深入解析dart语法数据类型,让你的编程更上一层楼

网络整理 2023-10-29 04:03

欢迎关注『郝先生头条号』,第一时间获得最新文章

上篇文章联通互联网开发者,必须把握这种Dart句型-数据类型中介绍了dart句型数据类型部份,这篇继续讲解dart句型运算符。

final和const

首先补充两个关键字final和const,定义变量时适当使用这两个关键字,可以让我们写出的程序愈加匀称。

① 必须初始化,且不可更改

例:

final String a = "必须初始化,且不可更改";

final double b = 3.14;

final c = "必须初始化,且不可更改";

final d = 3.14;

② 如果定义为类变量,请使用static修饰

例:

static final String a = "必须初始化,且不可更改";

① 必须初始化,且不可更改js中运算符的优先级js中运算符的优先级,编译成常量

例:

const String a = "必须初始化,且不可更改,编译成常量";

const double b = 3.14;

const c = "必须初始化,且不可更改,编译成常量";

const d = 3.14;

② 如果定位为类常量,请使用static修饰

例:

static const double a = 3.14;

运算符(Operators)总览

Dart提供了十分全面的运算符,接下来我们认识一下开发中常用的一些运算符。

运算符拥有优先级,遵循一定的结合律,建议你们没有掌握的情况下,要多使用括弧"()"保证估算结果的正确性。

位操作符使用得当可以写出愈发高效的程序,如果计算机基础不是太好的朋友,去回顾一下计算机基础知识,理解计算机底层是假如处理数据,为什么说位操作符愈发高效。参加过著名互联网公司笔试的同学,可能会遇到不使用加减乘除(+-*/)进行算数的题目,这类题目便是考察位操作的题目。

位移操作符中,大家要非常注意右移操作符,包括算数右移和逻辑右移,其中算数右移须要考虑符号位,而逻辑右移反之。

巧用条件运算符(?:)可以写成愈发简练的程序,且愈加符合x86-64处理器汇编规则,大家可以编撰一段使用条件运算符的C语言程序,然后使用GCC编译器汇编出汇编代码,一看到底。

算术运算符(Arithmetic Operators)

例:

int a = 2 + 8;

double b = 39.8 - 12.3;

int c = 2 * 5;

int d = 10 / 5;

例:

int a = 5 ~/ 2; // 结果:2

类似物理上的取余数

例:

int a = 5 % 2; // 结果:1

例:

int a = 1;

a++; // 结果:2

a--; // 结果:1

比较运算符(Equality And Relational Operators)

特别注意的地方是,等号(==)运算符运用于两个引用类型的对象比较时,比较的是对象的值是否相等,如果要比较两个引用类型的地址是否相等时,需要使用identical()方法。

拓展知识:

类型判断运算符(Type Test Operators)

这类符号在面向对象编程语言中非常又有,因为我们经常使用里氏替换原则编撰出非常灵活的代码。在实际使用对象时,判断对象的类型,然后进一步使用,可以帮助我们降低程序崩溃的问题。

如果我们非常确定一个对象是某种类型时,我们可以使用as将该对象转换为真正的类型。通常可以这样做:

例:

(a as AClass).name = "abc";

但是如果a不是AClass类型,或者为空(null),那么很有可能上述代码会抛出异常,所以在不确定a的类型的情况下,还是建议使用下边的写法。

if (a is AClass) {

a.name = "abc";

赋值运算符(Assignment Operators)

右侧值形参给左边变量

例:

int a = 32;

String b = "赋值";

这个运算符在其他语言中比较稀少,也就是假如两侧变量为空(null)时,才将两侧的值形参给左边变量

例:

int a = null;

a ??= 8; // 结果:8。即假如a是空(null),将8形参给a;如果a非空,那么a保持原先的值

a ?? = 30; // 结果:还是8

例:int a = 2;

a += 1 // 结果:3。相当于 a = a + 1;

逻辑运算符(Logic Operators)

① 常常使用它们的“短路特性”做条件过滤,即第一个条件(a)满足时,将不进行第二个条件(b)的判定

例:

if (a || b) {

// 如果a和b有一个为true,就会步入该句子

if (a && b) {

// 如果a和b都为true,才会步入该句子

② if句子中经常使用!a取代a == false

js中运算符的优先级_js中运算符的优先级_js中运算符的优先级

例:

if (a == false) {}

if (!a) {}

位运算符(Bitwise And Shift Operators)

尽管日常编程中不太常用位操作,但是在底层开发、框架编写者或则汇编语言中,将时常接触它。对于追求进步的我们,可以耗费一些时间备考一下二进制进制转换和位操作相关知识。

条件表达式(Conditional Expressions)

对于比较简单的条件句子,我们常常采用这些形式书写,因为愈发简练高效。

如果condition为true,那么执行expression1,否则执行expression2

例:

bool a = true;

int b = a ? 1 : 2; // 结果:b = 1

如果expression1非空(non-null),返回expression1的值,否则执行expression2并返回该值

例:

String a = "abc";

String b = a ?? "默认值"; // 结果:b = "默认值"

级联运算符(Cascade Notation(..))

可以在同一个对象上连续调用函数或访问成员变量。

例:

Person p = new Person();

p.name = "郝先生";

p.age = 18;

p.gender = "Mr."

使用级联形式:

p.name = "郝先生"

..age = 18

..gender = "Mr.";

其他运算符

例:

List a = ["First", "Second", "Third"];

a[1]; // 结果:"Second"

例:

Person p = new Person();

p.name; // 获取成员变量name的值

符号右侧的操作对象不为空(null)时,才能返回成员变量的值。

例:

Person p = new Person();

p?.name; // 如果p为空(null)时,返回null,否则返回name

swift中也有类似访问非空成员变量的句型,那里称为可选类型(optional),使用时须要拆箱操作,通常可以使用guard句型访问变量,这机制符合了苹果公司官方声称的swift是一门安全语言的理念。

结语

各种编程语言运算符类似,只是句型上的稍稍差别,dart编程语言降低了一些易于使用的小小特点,大家可以对比着练习一下,相信很快能够把握。

js中运算符的优先级