学习Flutter从Dart开始系列(一)之基本数据类型

1 Dart简介

Dart是一种开源的通用编程语言。它最初由Google开发用来代替前端的JS,后来随着JS的迅猛发展,Dart的位置就很尴尬,也变得不温不火。直到Flutter的出现再一次拯救Dart。作为当下最火的跨平台框架,Flutter天生支持Dart(毕竟还是自家的产品),Dart的身价也就水涨船高,它与JS有很多类似的地方,但是也有一些独有的特色,就让我们跟随这一系列的文章走进Dart的世界。

2 变量声明

var

类似于JavaScript,Dart也使用 var 来声明变量,但是Dart中变量一经赋值类型就确定了,不能再改变类型,否则回报错。

var a = 1;
a = "123";   // 编译器会警告

final 和 const

Dart 中final和const的用法与其他语言的用法并没有什么不同, final表示变量只能被赋值一次,赋值之后不可更改,否则会报错。const表示一个编译期常量。被final或const修饰的变量类型可省略。


final a = 1;                 //final int a = 1
const b = "abc";     //final String b = "abc"

dynamic 和Object

Object是所有对象的根基类,所有类型都是Object的子类,所以所有变量都可以声明为Object。dynamic声明的变量也可以赋值任意的对象,从这一点上看,Object和dynamic与var类似,不同的是object和dynamic声明的变量赋值过后类型可以更改。

 dynamic a = 1;
  a = "123";
  print(a);    //没有报错,输出123

  Object b = 2;
  b = "abc";
  print(b);   //没有报错,输出abc

Object与dynamic的区别是Object只能使用Object的方法,dynamic声明的对象编译器会提供所有的可能。

dynamic a = 1;     
a = "123";         
print(a.length);   //输出3
                   
Object b = 2;      
b = "abc";         
print(b.length);   //报错 : Error: The getter 'length' isn't defined for the class 'Object'.

3 基本数据类型

Dart 常用的数据类型有五种,分别是 Number,String,Boolean,List和Map。

Number

Number包含两种数据类型,int表示整型,double表示浮点型。声明时整型可以自动转型为浮点型,浮点型不能自动转化为整型。

 double a = 1;     //没有问题  
 int b = 1.1;      //会报错   
  • 常用属性和方法
属性描述
isOdd判断是否是奇数
isEvent判断是否是偶数
isNaN判断是否是数字
abs()取绝对值
ceil()返回不大于它最大的整数
floor()返回不小于它最小的整数
toString()转化为字符串
round()最接近的整数
remainder()除去之后的余数
int a = 1;  
int b = -1;            
double c = 1.4;        
print(a.isEven);       \\false
print(a.isNaN);        \\false
print(a.isOdd);        \\true
print(a.toString());   \\1
print(c.floor());          \\ 2
print(c.round());       \\1
print(c.ceil());              \\1
print(b.abs());              \\1
print(a.remainder(2));      \\1

String

Dart中的字符串值可以使用 单引号 或 双引号 或 三引号 表示。单行字符串使用单引号或双引号表示。三引号用于表示多行字符串。Dart可以使用+来连接字符串,也支持${}的插值表达式。

String a = "hello";         
 String b = "world";         
 print(a + " " + b);         \\ 输出hello world
                             
 int c = 1;                  
 print("This is ${c}");      \\ 输出 This is 1
  • 常用的方法和性质
属性描述
isEmpty判断是否为空
length长度
subString()截取子串
toLowerCase()字母全小写
toUpperCase()字符全大写
split()将字符串划分为列表
indexOf()返回字符的位置
startWith()判断字符串开头
replaceAll()替换字符串
contains()判断是否包含子串
String a = "Hello";           
String b = "a b c d";         
print(a.isEmpty);             \\false
print(a.length);              \\5
print(a.substring(2));        \\llo
print(a.toLowerCase());       \\hello
print(a.toUpperCase());       \\HELLO
print(b.split(" "));          [a, b, c, d]
print(a.indexOf("o"));      \\4   
print(a.startsWith("H"));     \\true
print(a.replaceAll("l", "o"));  \\heooo
print(a.contains("ll"));      \\true

Boolean

Dart Boolean类型只有两个值true和false。

List

Dart 中的List类似于其他语言中的数组,是有序的对象的集合。既可以声明固定长度的List,也可以声明不定长度的List。

List list1 = new List(3);  //声明定长的List
List list2 = new List();   //声明不定长的List

//List初始化
  list1[0] = 0;
  list1[1] = 1;
  list1[2] = 2;
  print(list1); 输出[0, 1, 2]
  • List常用属性和方法
属性描述
lengthList的长度
firstList第一个元素
lastList最后一个元素
reversed将List翻转
isEmpty判断List是否为空
asMap将List转化为Map
add向List添加元素
clear清空List
remove移除元素
 List list1 = new List(3);  //声明定长的List
  List list2 = new List();   //声明不定长的List

  //List初始化
  list1[0] = 0;
  list1[1] = 1;
  list1[2] = 2;
  print(list1.length);                        //3
  print(list1.first);                            //0
  print(list1.last);                            //2
  print(list1.reversed);                 //[2, 1, 0]
  print(list1.isEmpty);                 //false
  Map map = list1.asMap();      
  print(map);                               //{0 : 0, 1 : 1, 2 : 2}
  list2.add(1);                              
  print(list2);                               //[1]
  list2.clear();
  print(list2);                              //[]

Map

Map对象是一个简单的键/值对。Map中的键和值可以是任何类型。Map是动态集合。换句话说,Map可以在运行时增长和缩小Map对象是一个简单的键/值对。Map可以通过字面量声明,也可以通过构造函数声明。

Map map = {"name" : "Joe", "sex" : "male"};    //通过字面量声明
Map map1 = new Map();                          //通过构造函数声明
  • Map常用的属性和方法
属性描述
lengthMap的长度
keys返回key的列表
values返回value的列表
containsKey判断是否包含key
containsValues判断是否包含value
isEmpty判断是否为空
remove移除一个元素
 Map map = {"name" : "Joe", "sex" : "male"};    //通过字面量声明
Map map1 = new Map();  //通过构造函数声明
print(map.length);         \\2
print(map.keys);              \\ ["name", "sex"]
print(map.values);          \\["Joe", "male"]
print(map.containsKey("name"));      \\true
print(map.containsValues("John"));    \\false
print(map.isEmpty);    \\false
print(map.remove("name"));   \\ "Joe"

最后

今天我们主要简单介绍了Dart的变量声明以及简单的数据类型,虽然很简单,但是大家还是可以动手亲自写一遍。纸上得来终觉浅, 觉知此事要躬行。如何大家觉得不错,点赞是最大的支持更多文章大家可以关注微信公众号QStack,追寻最纯粹的技术,享受编程的快乐。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值