当前位置: 首页 > news >正文

【dart】常用数据类型

Number

  • num 可以声明是整数,也可以是浮点数
  • int 只能声明整数
  • double 只能声明浮点数
main() {int cont = 6;// cont = 6.3;double core = 90;print(core); // 90.0num age = 18;num sum = 20.9;
}
  • 常用api
main() {int cont = 6;// cont = 6.3;double core = 90;print(core); // 90.0num age = 18;num sum = 20.9;print(core.toString()); // '90.0'print(age.toDouble()); // 18.0print(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)); // 0print(10.compareTo(8)); // 1print(10.compareTo(20)); // -1// 最大公约数print(10.gcd(16)); // 2print(12.gcd(16)); // 4// 科学计数法print(1000.toStringAsExponential(2)); // 1.00e+3print(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: 蓝翔}

更多

相关文章:

  • 探索HDFS读写流程、节点机制和数据完整性
  • 基于EasyCVR视频技术的流媒体视频融合与汇聚管理系统建设方案
  • 【ARM linux mqtt协议连接服务器】
  • 16 OpenCV Laplance算子
  • 初识Spring MVC
  • 【数据挖掘】练习1:R入门
  • 自然语言处理(NLP)—— 语义关系提取
  • HTML 学习笔记(九)颜色值和长度单位
  • ThingsBoard开源物联网平台介绍
  • python3:No module named ‘pandas‘
  • LeetCode454 四数相加
  • 用Docker Compose实现负载均衡【入门篇】
  • 数据库管理-第160期 Oracle Vector DB AI-11(20240312)
  • STM32外设分类--学习笔记
  • Kotlin Retrofit 网络请求
  • 5、React组件事件详解
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • CSS魔法堂:Absolute Positioning就这个样
  • ES6 学习笔记(一)let,const和解构赋值
  • interface和setter,getter
  • iOS 系统授权开发
  • LeetCode29.两数相除 JavaScript
  • Node 版本管理
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue实战(四)登录/注册页的实现
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 爱情 北京女病人
  • 电商搜索引擎的架构设计和性能优化
  • 蓝海存储开关机注意事项总结
  • 区块链将重新定义世界
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 微信支付JSAPI,实测!终极方案
  • #DBA杂记1
  • #QT(串口助手-界面)
  • (c语言)strcpy函数用法
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (vue)页面文件上传获取:action地址
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (三分钟)速览传统边缘检测算子
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .libPaths()设置包加载目录
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET基础篇——反射的奥妙
  • .net下简单快捷的数值高低位切换
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .php文件都打不开,打不开php文件怎么办
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @GlobalLock注解作用与原理解析
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案