Dart 数据类型,你需要了解一下

发布于 2021-09-01 11:15 ,所属分类:中小学阅读学习资料

Dart的所有东西都是对象。它们都继承自Object,默认是都是null。Dart中支持以下数据类型:
  • Number 数值型
  • String 字符串
  • Boolean 布尔型
  • List 数组
  • Map 键值对
  • Runes ([String]的符文(整数Unicode代码点))

数值型 num

Dart中提供了两种数值类型, 分别是整型int和浮点型double.
void main() {  //定义一个数值型a, 给a赋值为1  num a = 1;   print(a);  //打印a的值为1   a = 1.1;  //给a赋值为1.1   print(a); // 打印a的值为1.1
int b = 1; b = 1.1 //此时会报错:A value of type 'double' can't be assigned to a variable of type 'int'.}

可以发现, 如果是使用 num 声明的变量,那么可以在 int 和 double 之间相互转换.

但如果是直接定义了 int 或者 double , 那么就不能再赋其他类型的值.

数值的操作

运算符 :

  • + ,

  • - ,

  • * ,

  • / ,

  • ~/,

  • %

加减乘都好理解了 , 我们看一下剩下的几个操作:

void main() {  var a = 5 / 2;  // 2.5
var b = 5 ~/ 2; // 2 var c = 5 % 2; // 1}

直接使用/获得的结果是长除法的结果 , 而使用~/获得的结果是短除法中的商, 而是用%就是取余数的操作了.

常用属性

  • isNaN : num的属性,判断一个对象是否为非数字,是数字则返回false,否则返回true.

  • isEven : int 的属性,判断一个数字是否为偶数

  • isOdd : int 的属性,判断一个数字是否为奇数

  • sign : 返回该整数的符号(对于0返回0,对于小于0的值返回 -1,对于大于0的值返回 1。)

void main() {  int i = 1;
print(i.isNaN); // false print(i.isOdd); // true print(i.isEven); // false print(i.sign); //1}

常用方法

  • abs() : 返回该整数的绝对值

  • round() : 返回四舍五入的近似值

  • floorl() : 向下取整

  • ceil() : 向上取整

  • toInt() : 转成int类型 (舍去小数)

  • toDouble() : 转成double型

  double i = 1.5;
print(i.sign); //1.0 print(i.abs()); //1.5 print(i.round()); //2 print(i.ceil()); //2 print(i.floorl()); //1 print(i.toInt().toDouble()); //1.0

字符串

声明字符串

普通字符串使用单引号或者双引号都可以,多行的可以使用'''来包裹.

String a = '我是字符串';  String b = '我也是字符串';  String c = '''第一行第二行 ''';

声明原始字符串,直接在字符串前加字符“r” , 可以避免“\”的转义作用,在正则表达式里特别有用

 print('换行符: \n');   //输出 : 换行符:
print(r'换行符: \n'); //输出 : 换行符: \n*/

字符串拼接

//使用+ 连接String a = '字符串1'+'字符串2';
//使用空格拼接String b = 'adc' 'def' 'gg1';
//拼接对象和表达式String a = 'a';
String k = '123${a.toString()}';String s = '123${a}';String l = '123$a';

可以在字符串中使用${}中包裹来实现拼接, 如果{}内是一个对象可以省略{}.

布尔值

为了表示布尔值,Dart有一个名为的类型bool。只有两个对象具有bool类型:true和false,它们都是编译时常量。

assert 是语言内置的断言函数,仅在检查模式下有效 如果断言失败则程序立刻终止

 String name = 'Li'; assert(name == "Li");

List

称作集合(数组),是有序且可重复的。

List a = [];List b = [1,2,3,"a"];List c = new List();List<int> d = [1,2,3];

map

是键值对的集合, 一般来说,map是将键和值相关联的对象。键和值都可以是任何类型的对象。每个键只出现一次,但你可以多次使用相同的值。Dart支持map由map文字和map类型提供。

constfinal var

再聊点const和final,用法和其他语言类似 在声明变量的时候,除了var,还可以使用const和final同时,在使用const和final的时候,可以省略var或者其他类型

var i = 10const i = 10final i = 10
int i = 10const int i = 10final int i = 10

const和final定义的都是常量,值不能改变 并且在声明的时候就必须初始化 但是也有细微差别,简单来说

const定义的是编译时常量,只能用编译时常量来初始化final定义的常量可以用变量来初始化

final time = new DateTime.now(); //Okconst time = new DateTime.now(); //Error,new DateTime.now()不是const常量

var、final等在左边定义变量的时候,并不关心右边是不是常量 但是如果右边用了const,那么不管左边如何,右边都必须是常量

const list = const[1,2,3];//Okconst list = [1,2,3];//Error
final list = [1,2,3];//Okfinal list = const[1,2,3];//Okfinal list = const[new DateTime.now(),2,3];//Error,const右边必须是常量

感谢阅读,本文完~


作者 | __white
来源 | https://juejin.cn/post/6996250246313410596


相关资源