Dart基础入门(一)变常量与数据类型

前言:

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  (后续的代码样例基本参照于它)

以上。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值