Dart语言入门(二)

我们上一篇博客讲了Dart的安装以及在InteIIiJ IDEA搭建Dart的开发环境的相关介绍,接下来介绍Dart语言的相关知识。

变量与基本数据类型

在Dart里,变量声明使用var关键字,如下图所示:

var name='tom';

在Dart语言里一切皆为对象,如果没有将变量初始化,那它的默认值是null。以下代码示例判断未初始化的变量是否为null:

var name;
if(name==null)

1.常量和固定值

①.如果定义的变量不会变化,可以使用final或const来声明。const是一个编译时的常量,final的值只能被赋值一次,代码示例如下:

final name='tom'; 
name='john';//这会引发一个错误

②.可以通过const来创建常量的值,就是说const[]本身是构造函数,代码示例如下:

final name=const[];
const username=const[];

2.基本数据类型

Dart语言常用的基本数据类型包括:Number、String、Boolean、List、Map。
1.Number类型

Number类型包括如下两类:

①.int整形。取值范围:-2^53到2^53。

String str1="hello";//单双引号都可以


②.double浮点型。64位长度的浮点型数据,即双精度浮点型
int和double类型都是num类型的子类。int类型不能包含小数点。num类型包括的操作有:+,-,*,/以及位移操作>>。num类型包括
的常用方法有:abs、ceil和floor。示例代码如下:

num a = 10;
int b = 20;
int d = 15;
double c = 20.5;
print(b + a);
print(b - a);
print(b * a);
print(b / a);
print(b ~/ a); //取整
print(b % a); //取余
print(b.isEven); //是否是偶数
print(b.isOdd); //是否是奇数
print(d.isOdd);
int e = -100;
print(e.abs()); //绝对值
double f = 10.5;
print(f.round()); //四舍五入
print(f.floor()); //取不大于的最大整数
print(f.ceil()); //取不小于的最大整数
print(f.toInt()); //转成整数

2.String类型

①.String类型也就是字符串类型。代码示例如下:

String str1="hello";//单双引号都可以

②.String可以用+操作,代码示例如下:

String str5="this is my first language";
print(str5+"new");

③.可以使用三个单引号或双引号来定义多行的String类型。代码示例如下:

String str1='''hello;
String str2="""hello;

3.Boolean类型

Dart是强bool类型检查,只有bool类型的值是true才被认为是true。在Dart语言中,值必须是true或false。代码示例如下:

bool isFirst=true;

4.List类型

在Dart语言中,具有一系列相同类型的数据称为List对象。代码示例如下:

var list=[1,2,3];

List对象的第一个元素的索引是0,最后一个元素的索引是list.length-1,代码示例如下:

var list=["hello","dart","world"];
print(list.length);
print(list.[list.length-1]);
print(list.length);
list.add("new");
print(list);
list.insert(0, "list");
print(list);
list.removeAt(2);
print(list);
list.clear();
print(list);
print(list.indexOf("hello"));

创建不可变的list:var list=const[1,2,3];

Map类型

Map类型将key和value关联在一起,也就是键值对。代码示例如下:

var map = {"first": "dart", "second": "java", "third": "android"};

也可以使用Map对象的构造函数Map()来创建Map对象,代码示例如下所示:

var map=new Map();
map["first"]="dart";
map["second"]="java";
map["third"]="android";
print(map.length); //获取map的长度
print(map.keys);  //获取map的key
print(map.values);//获取map的value
print(map.containsKey("first"));//判断map是否包含某个key
print(map.containsValue("first"));//判断map是否包含某个value
print(map.remove("first"));//移除map的某个key

运算符

            描述                                        运算符
一元后缀                 expr++ expr-- () [] . ?.
一元前缀                   -expr !expr ~expr ++expr --expr
乘法类型                 * / % ~/
加法类型                   +  -
移动位运算              << >>
与位运算                 &
异或位运算              ^
或位运算                 |
关系和类型测试      >= <= > < as is is!
等式                         == !=
逻辑与                     &&
逻辑或                     ||
条件                        expr1?expr2:expr3
级联                        ..
赋值                        = *= /= ~/= %= += -= <<= >>= &= ^= |= ??=

操作符的优先级由上到下逐个减少,上面行内的操作符优先级大于下面行内的操作符。

算术运算符

       操作符                                                  含义
           +         
           -          
       - expr         一元减号,也命名为负号(使后面表达式的值反过来)
           *          
           /      除
          ~/         返回一个整数值的除法
          %            取余,除法剩下的余数

代码示例如下:

int a=10;
int b=5;
print(a+b);
print(a-b);
print(a*b);
print(a/b);
print(a~/b);
print(a%b);

Dart还支持前缀和后缀递增和递减运算符

                操作符                            含义
++var var=var+1表达式的值为var+1
var++ var=var+1表达式的值为var
var++ var=var-1表达式的值为var-1
var--  var=var-1表达式的值为var

代码示例如下:

var a,b;
a=0;
b=++a;//在b获得值之前自增a  a=1,b=1;
a=0; 
b=a++;//在b获得值之后自增a  a=1,b=0;
a=0; 
b=a--;//在b获得值之前自减a  a=-1,b=-1;
a=0; 
b=a--;//在b获得值之后自减a  a=-1,b=0;

关系运算符

         操作符                                           含义
==  等于
!=  不等于
> 大于
小于
>= 大于等于
<=  小于等于

需要判断两个对象是否相等,请使用==运算符,代码示例如下:

int a=5;
int b=3;
print(a==b);
print(a!=b);
print(a>b);
print(a=b);
print(a<=b);
String strA="124";
String strB="321";
print(strA==strB);

类型测试操作符

as、is和is!操作符在运行时用于检查类型非常方便

        操作符                                           含义
as 类型转换
is 当对象是相应类型时返回true
is! 当对象不是相应类型时返回true

如果obj实现了T所定义的接口,那么obj is T将返回true

使用as操作符可以把一个对象转换为指定类型,前提是能够转换。代码示例如下:

if(person is Person){//类型检测,转换之前用is判断一下 
   person.age=18;   
}

如果能确定person是Person的实例,则你可以通过as直接简化代码:

(person as Person).age=18;

赋值操作符

可以使用=运算符赋值。要仅在变量为null时赋值,请使用??=运算符。代码示例如下:

String a;
String b="java";
String c=a??b;

复合赋值运算符是将操作与赋值相结合。以下是复合赋值运算符的工作方式:

           复合赋值                            等式表达式
a op b  a=a op b
a+=b a=a+b
a-=b  a=a-b

逻辑运算符

可以使用逻辑运算符反转或组合布尔表达式,逻辑运算符如下所示:

          操作符                                            含义
!expr 反转以下表达式(将false更改为true,反之亦然)
|| 逻辑或
&& 逻辑与

运算符

通过操作位的移动来达到运算的目的。具体含义如下所示:

          操作符                                        含义
&
|
^ 异或
~expr 一元位补码(0s变为1s,1s变为0s)
<< 左移
>>  右移

条件表达式

condition?expr1:expr2这个表达式被称为三元表达式。如果条件为真,就返回expr1,否则返回expr2。代码示例如下:

int gender=0;
String str=gender==0?"男":"女";

级联操作

级联操作用两个点(..)表示,可对同一对象执行一系列操作。代码示例如下:

var person=new Person();
person..name="Tom"
      ..age=20
      ..work();

到这里变量与基本数据类型以及运算符的知识就讲解完了,我们下篇博客为大家讲一下关于函数的知识。

Dart语言入门(一)

Dart语言入门(二)

Dart语言入门(三)

你可能感兴趣的:(Flutter踩坑路)