Dart 数据类型,你需要了解一下
发布于 2021-09-01 11:15 ,所属分类:中小学阅读学习资料
Number 数值型 String 字符串 Boolean 布尔型 List 数组 Map 键值对 Runes ([String]的符文(整数Unicode代码点))
数值型 num
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 = 10;
const i = 10;
final i = 10;
int i = 10;
const int i = 10;
final int i = 10;
const和final定义的都是常量,值不能改变 并且在声明的时候就必须初始化 但是也有细微差别,简单来说
const定义的是编译时常量,只能用编译时常量来初始化final定义的常量可以用变量来初始化
final time = new DateTime.now(); //Ok
const time = new DateTime.now(); //Error,new DateTime.now()不是const常量
var、final等在左边定义变量的时候,并不关心右边是不是常量 但是如果右边用了const,那么不管左边如何,右边都必须是常量
const list = const[1,2,3];//Ok
const list = [1,2,3];//Error
final list = [1,2,3];//Ok
final list = const[1,2,3];//Ok
final list = const[new DateTime.now(),2,3];//Error,const右边必须是常量
感谢阅读,本文完~
来源 | https://juejin.cn/post/6996250246313410596
相关资源