前言:
Dart 是一种针对客户端优化的编程语言,可以为任意平台开发流畅的应用程序。对于移动开发人员来说,由于Flutter框架的持续升温,我们很有必要去学习它,而Dart正是它的开发语言,看上去是一门全新的面向对象编程语言,但其实它吸收了js,java等语言的特性,所以对前端以及移动开发人员来说比较友好,上手难度不大,如果你没有任何语言经验也不要紧,本系列文章将用一个个小例子来让你快速入门。好了,一起学习吧!
1.变量与常量:
在说变量与常量前要告诉大家Dart语言的函数入口也是main方法,这和Java等语言类似,所以你要运行代码首先要写个main方法,具体细节以后会介绍,写法如下:
void main(){
//int a = 3;
var a = 2;
a = 3;
const b = "james";
const int c = 0;
//b = 3
print(a);
print(b);
}
关键字(变量): var 通常用这个关键字来声明一个变量 例: var a;
在Dart中声明变量可以不用赋初始值,此时a为null,用var来声明变量意味着你一开始没有给a指定类型(这个时候a为dynamic类型,就是可变类型,这个是dart特有),这个时候Dart会根据你给它赋值的类型来确定它的类型,如:a = 2;a就为int类型,其他类型也是这样,这和js以及kotlin语言很像,变量可以多次赋值来改变原有值。
关键字(常量):const 例: const d = 20;
声明常量必须赋初始值,而且只能赋值一次,声明常量具体类型你可给可不给,因为和变量一样,Dart会根据值的类型来确定。好了,具体变量和常量代码示例在上面,print()方法为dart中的打印方法。
2.数据类型:
Dart中内置的基本数据类型有以下:
- Number(数值型)
- String(字符串)
- Boolean(布尔型)
- List(列表)
- Map(键值对)
- Set(无序且内容不重复的列表)
- Runes(用来获取UTF-32字符集的字符)
- Symbols(编译时常量)
一,number数值型包括int(整型),double(浮点型)。声明示例:
num a = 1; a = 1.1; int b = 2; double c = 2.32; c = 2;
值得注意的是如果采用num和double关键字来声明变量可以同时赋int和double类型的值,即使是初始值也一样,但如果用int关键字来声明的话,则只能赋整数。这和Java有相似之处。关于数值操作这些,下面直接上代码:
void main() {
num a = 1.0;
a = 1.1;
//print(a);
int b = 15;
double c = 1.2;
c = 1;
print(b+c);
print(b-c);
print(b*c);
print(b/c); //结果为double
print(b~/c);//取除法结果整数部分
print(b%c);
print(0.0/0.0); //结果为NaN
print(b.isEven);//是否是偶数
print(b.isOdd);//是否是奇数
print(b.abs());//取绝对值
print(c.round());//四舍五入
print(c.floor());//小于它的最大整数
print(c.ceil());//大于它的最小整数
print(c.toInt());//把浮点型转成整型
print(b.toDouble());//把整形转成浮点型
}
二,String类型创建示例:
String str = "james"; str = 'kobe'; 单行显示,Dart表示字符串单引号和双引号都行,这与js和kotlin类似
String str = '''hello
dart''';
str = """hello
yx"""; 多行显示时需要用三个引号
str = 'hello \n world'; \n为换行转义符,即后面的字符换行
str = r'hello \n world'; 如果想显示hello \n world,只需在字符串前加r即可;
下面关于字符串的操作以及方法,直接上代码示例:
void main(){
String str = '''hello
dart''';
str = """hello
yx""";
str = 'hello \n world';
str = r'hello \n world';
print(str);
/**
* 操作示例
*/
String str2 = 'my favorite basketball player is lebron james';
print(str2+' or kobe ;');//在str2后面拼接or kobe ;
print(str2*3);//将str2连续拼接3次
print(str==str2);//判断是否相等,dart语言中所有判断相等都用==操作符,结果为boolean类型
print(str2[str2.length-1]);//首先将str2看作一个数组,然后将指定位置的字符打印出来
//length属性为字符串长度,这里就是将str2字符串中最后一个字符单独打印
int a = 2;
int b = 3;
print('a + b = ${a + b}');//$操作符意为将想要打印的变量,表达式,方法结果以字符形式打印
//如果是一个表达式或方法则需用{}括起来,
print('a = $a');//单独一个变量则直接写后面
print(str2.isEmpty);//isEmpty判断当前字符串是否为空
print(str2.isNotEmpty);//isisNotEmpty判断当前字符串是否不为空
/**
*方法示例
*/
print(str2.contains('is'));//当前字符串是否包含is
print(str2.startsWith('my'));//当前字符串是否以my开头
print(str2.endsWith('es'));//当前字符串是否以es结尾
print(str2.substring(0,2));//截取下标0到1的字符串(前面的index包括,后面不包括)
print(str2.indexOf('m'));//m字符第一次出现的下标
print(str2.lastIndexOf('s'));//s字符最后出现的下标
print(str2.split(' '));//以' '为标志将当前字符串划分为一个数组
print(str2.replaceAll('lebron james','kobe'));//前一个参数为要被替换字符串,后面为替换字符
}
三,boolean类型示例:
bool isFalse = false; bool isTrue = true;
和Java中不同的是,Dart中声明boolean类型使用关键字bool,另外有过语言经验的都应该知道,这个类型的值只有true和false,即真假,如果不赋初始值为null。代码示例如下:
void main(){
bool isTrue = true;
bool isFalse = false;
print(isTrue == isFalse);
}
四,list类型示例:
var list1 = [1,2,'sa']; var list2 = const [5,6,'kobe',true]; var list3 = new List();
这是三种常用创建list的方式,第一种是常规方式即没有指定元素类型所以可以随便存储各类型,第二种为常量list即不可更改元素值,第三种为没有赋初始值,而且没有控制元素个数,这种创建方式比较自如。关于list的相关操作我们直接看代码:
void main(){
var list1 = [1,2,'kobe',true];
list1[0] = "james";
//print(list1[3]);
//print(list1);
var list2 = const [1,2,'wade',false];
var list3 = new List ();
print(list3);
list1.add(5);//在list1现有元素后面加上5
list1.insert(3,'rose');//在下标为3的位置插入指定元素,包括原位置及后面的元素往后推一位
print(list1);//给没有编程经验的小白提个醒,在几乎所有编程语言中,下标都是0开始的
//print(list3);
list1.remove(1);//移除指定元素,如果没有返回false
print(list1);
print(list2.indexOf(2));//指定元素在数组中第一次出现的下标
print(list2.lastIndexOf(2));//指定元素在数组中最后一次出现的下标
var list4 = ['james','kobe','wade','rose'];
print(list4.sublist(1));//将包括给定index及后面的元素重新生成一个list
list4.forEach(print);//加强for循环遍历元素
list4.clear();//清空list
print(list4);
}
五,map类型示例:
var map1 = new Map(); var map2 = {'google':'dart','NBA':'JORDAN',1:true}; var map3 = const {'sun':'java','apple':'swift'};
首先map类型就是键值对,必须有相应键和对应值,这上面三种常用创建方式其实和list有异曲同工之妙,它的相关操作我也将直接上代码讲解:
void main(){
/**
* map创建
*/
var map1 = new Map();
var map2 = {'google':'dart','NBA':'JORDAN',1:true};
var map3 = const {'sun':'java','apple':'swift'};
print('map1: $map1');
print('map2: $map2');
print('map3: $map3');
//print(map2['NBA']);//通过指定键来取值
//print(map2[1]);
//map2[1] = 'james';
//print('map2: $map2');
//map3['apple'] = 'ios';//这里因为是常量map所以不能改变值
//print('map3: $map3');
/**
* map操作
*/
var map4 = {'one':'C','two':'java','third':'dart','four':'python'};
print(map4.length);//map的长度
print(map4.isEmpty);//map是否为空
//map4.remove('one');//移除指定键
print(map4.keys);//打印全部键
print(map4.values);//打印全部值
print(map4.containsKey('one'));//是否包含这个键
print(map4.containsValue('java'));//是否包含这个值
map4.forEach(f);//加强for循环遍历
var list = [5,2,3,4];
print(list.asMap());//将list转成map
}
void f(key,value){
print('key=$key , value=$value');
}
六,dynamic类型示例:
dynamic其实可以相当于var也就是声明变量时不过其指定类型,即可变类型,dart中默认就是它了,下面看看代码示例:
void main(){
//dynamic为可变类型
dynamic a = 20;
a = "james";
print(a);
var list = new List<dynamic>();
list.add(1);
list.add("kobe");
print(list);
}
到这里我们将结束Dart语言第一部分介绍,至于Runes和Symbols类型用的不多,大家如果有兴趣可以自己查资料,我这里推荐 Dart官方文档,好了,相信经过上面代码及案例的介绍,大家已经对Dart有一定认识了,接下来我将继续深入介绍Dart语言其他基础部分,等我哦!
这里给上我的demo地址供小伙伴们参考:https://github.com/OMGyan/dart_study (后续的代码样例基本参照于它)
以上。