我们上一篇博客讲了Dart的安装以及在InteIIiJ IDEA搭建Dart的开发环境的相关介绍,接下来介绍Dart语言的相关知识。
在Dart里,变量声明使用var关键字,如下图所示:
var name='tom';
在Dart语言里一切皆为对象,如果没有将变量初始化,那它的默认值是null。以下代码示例判断未初始化的变量是否为null:
var name;
if(name==null)
①.如果定义的变量不会变化,可以使用final或const来声明。const是一个编译时的常量,final的值只能被赋值一次,代码示例如下:
final name='tom';
name='john';//这会引发一个错误
②.可以通过const来创建常量的值,就是说const[]本身是构造函数,代码示例如下:
final name=const[];
const username=const[];
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()); //转成整数
①.String类型也就是字符串类型。代码示例如下:
String str1="hello";//单双引号都可以
②.String可以用+操作,代码示例如下:
String str5="this is my first language";
print(str5+"new");
③.可以使用三个单引号或双引号来定义多行的String类型。代码示例如下:
String str1='''hello;
String str2="""hello;
Dart是强bool类型检查,只有bool类型的值是true才被认为是true。在Dart语言中,值必须是true或false。代码示例如下:
bool isFirst=true;
在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类型将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语言入门(三)