【dart】常用数据类型

本文介绍了Dart编程中的基本数据类型如整数(int)和浮点数(double),以及常用的API函数,包括数值转换、字符串处理、布尔判断、列表(List)、集合(Set)和映射(Map)的操作,展示了如何声明和使用这些数据结构及其特性。
摘要由CSDN通过智能技术生成

Number

  • num 可以声明是整数,也可以是浮点数
  • int 只能声明整数
  • double 只能声明浮点数
main() {
  int cont = 6;
  // cont = 6.3;

  double core = 90;
  print(core); // 90.0

  num age = 18;
  num sum = 20.9;
}
  • 常用api
main() {
  int cont = 6;
  // cont = 6.3;

  double core = 90;
  print(core); // 90.0

  num age = 18;
  num sum = 20.9;

  print(core.toString()); // '90.0'
  print(age.toDouble()); // 18.0
  print(sum.toInt()); // 20 向下取整

  print(3.1415926.round()); //3 四舍五入
  print(3.6.round()); //4 四舍五入
  print(3.1415926.toStringAsFixed(5)); // 3.14159 四舍五入指定小数位数

  print(10.remainder(4)); // 2 取余

  // 比较: a.compareTo(b); a = b 返回:0; a > b 返回: 1; a < b 返回: -1;
  print(10.compareTo(10)); // 0
  print(10.compareTo(8)); // 1
  print(10.compareTo(20)); // -1

  // 最大公约数
  print(10.gcd(16)); // 2
  print(12.gcd(16)); // 4

  // 科学计数法
  print(1000.toStringAsExponential(2)); // 1.00e+3
  print(1000.toStringAsExponential(1)); // 1.0e+3
}
  • NaN
var n = 0 / 0;
print(n); // NaN
print(n.isNaN); // true

更多

字符串

  • 字符串声明
// 单引号声明
var str1 = 'hello';
// 双引号声明
var str2 = "world";
// 三个引号可声明多行的字符串,单双均可以,要成对出现
String str4 = """我系
渣渣辉""";
String str5 = '''你洗
古天乐''';
  • 字符串拼接
var str1 = 'hello';
String str5 = '''你洗
古天乐''';
print(str1 + str5);
// hello你洗
// 古天乐
  • 字符串常用api
print('abcdefg'.split('')); // [a, b, c, d, e, f, g]

// 去除首位空格
print('  123 '.trim()); // 123

// 判空
print(''.isEmpty); // true
print(''.isNotEmpty); // false

// 替换
print('hello java'.replaceAll('java', 'dart')); // hello dart
print('1s5f15t1rg1gh5r1g1r1h5rt1h5r'.replaceAll(RegExp(r'\d+'), '_')); // _s_f_t_rg_gh_r_g_r_h_rt_h_r

// 判断是否是手机号
print(RegExp(r'^1\d{10}$').hasMatch('13312580490')); // true

// 查找字符串
print('hello'.contains('e')); // true

// 定位字符串
print('hello'.indexOf('e')); // 1
print('hello'.lastIndexOf('o')); // 3
  • 模板字符串 强调: ${变量}, ${}可以省略
var message1 = "my name is $name, age is $age, height is $height";
var message2 = "name is $name, type is ${name.runtimeType}";
print(message1);
print(message2);

更多

布尔类型

  • 通过bool关键字声明

  • 布尔类型有两个值: true 和 false

bool flag = true;
print(flag);
bool flag = false;
print(flag);
  • 对变了进行判断,要显式的检查布尔值
bool flag = true;
var tag;
if (flag) {
  print('');
}

if(tag) {} // 这样会报警告,dart强类型语言不会隐式转换
if(tag == null) {}

更多

List

  • 声明
//字面量方式声明
List list1 = [];
List list2 = <int>[];

//构造函数声明
List list3 = new List.empty(growable: true); // 不限制长度的空列表
List list4 = new List.filled(3, 0);

print(list1); // []
print(list2); // []
print(list3); // []
print(list4); // [0, 0, 0] 
  • 扩展操作符
var list = [1,2,3];
List list1 = <int>[0, ...list];

var list2;
// 避免null扩展
List list1 = <int>[0, ...?list2];
  • 常用api
var l = [1,2,55,03,54,2615,6,'fsf','fs','rwet',8,12,56,1,5];
// 返回列表长度
print(l.length);
// 列表翻转
print(l.reversed.toList());
// 添加元素
l.addAll([99,88,77]);
print(l);
// 删除指定元素
l.remove(88);
print(l);
// 删除指定下标元素
l.removeAt(1);
// 指定位置添加元素
l.insert(5,999);
// 指定位置添加多个元素
l.insertAll(5,[1,2,3,4,56]);
print(l);
// 清空列表
l.clear();
// 列表判空
print(l.isEmpty);

// 数组合并
list words = ['hello','world'];
print(words.join('-')); // hello-world
  • 遍历
List test = <int>[1,2,3,4,6,7,8];

for(int i = 0; i < test.length;i++) {
// print(test[i]);
}

for(int item in test) {
// print(item);
}

// forEach
test.forEach((element) {
print(element);
});

// map
print(test.map((e) => e * e).toList());
// [1, 4, 9, 16, 36, 49, 64] map完是可迭代对象,可以同toList方法转换成数组

// where
print(test.where((element) => element.remainder(2) == 0));
// (2, 4, 6, 8) 过滤出偶数

// any
print(test.any((element) => element > 3)); // true
// 判断是否有一个元素大于3,返回布尔值

// every
print(test.every((element) => element > 2)); // false
// 判断是否所有元素大于3,返回布尔值

更多

Set

  • 定义: 是无序元素不重复的集合
  • 声明
var nums = <int>{ 1, 2, 3 };
print(nums);

Set animals = new Set();
  • 不能通过下标取值
// print({1,2,3}[2]) 编译不通过
  • 具有集合特有的操作(交并差)
// 交并差
Set set1 = {1,2,8,9,4,6,12,3};
Set set2 = {1,2,8,11,18,26,12,3};

// 交集
print(set1.intersection(set2)); // {1, 2, 8, 12, 3}
// 并集
print(set1.union(set2)); // {1, 2, 8, 9, 4, 6, 12, 3, 11, 18, 26}
// 差集
print(set1.difference(set2)); // {9, 4, 6}
  • 常用api
Set animals = new Set();
animals.add('dog');
animals.add('cat');
animals.addAll(['旺财','二哈']);
print(animals); // {dog, cat, 旺财, 二哈}
print(animals.toList()); // [dog, cat, 旺财, 二哈]
print(animals.first); // dog
print(animals.last); // 二哈

// 可以通过Set给数组去重
print([1,1,1,'a','a',2,3,6,48,55,55].toSet().toList()); // [1, a, 2, 3, 6, 48, 55]

更多

Map

  • 定义: map是一个无序的键值(key-value)对;也作哈希或字典。
  • 声明方式
var p = {'name':'w','age':18};
Map map = new Map();
map['name'] = 'g';
map['sex'] = '男';
  • 常用api
var p = {'name':'w','age':18};
Map map = new Map();
map['name'] = 'g';
map['sex'] = '男';

// 属性访问
print(map['sex']);

// 判断map是否存在某个键
print(p.containsKey('name'));

p.putIfAbsent('school', () => '蓝翔');
print(p); // {name: w, age: 18, school: 蓝翔}
p.putIfAbsent('school', () => '新东方烹饪');
print(p); // {name: w, age: 18, school: 蓝翔}

// 获取map中所有的key和value,可迭代对象
print(p.keys); // (name, age, school)
print(p.values); // (w, 18, 蓝翔)

p.remove('name');
print(p); // {age: 18, school: 蓝翔}

// 当key满足时删除该属性
p.removeWhere((key, value) => key == 'age');
print(p); // {school: 蓝翔}

更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值