成功的秘诀就在于多努力一次。为了成功,你努力了多少次?
Dart 基础类型详解
基础类型
1. 数字类型
int 类型
整数值不大于64位, 具体取决于平台
int age = 20; // 定义一个 int 类型的变量 age
double 类型
64位双精度浮点数,Dart 只有 double是双精度的,不像 Java 还有 float 单精度类型
double money = 5.2; // 定义一个金额 5.2
2. 字符串类型
String
Dart 字符串是通过单引号或者双引号创建,Java 语言中定义字符串的时候是必须用双引号的,使用连续三个单引号或者三个双引号实现多行字符串对象的创建
String name = "zhangsan"; // 定义一个字符串类型的名字 zhangsan 双引号定义
String name_1 = 'lisi'; // 定义一个字符串类型的名字 lisi 单引号定义
// 多行定义字符串
String name_2 = """
我是张三
今年23
""";
字符串拼接
可以使用 + 运算符来把多个字符串连接为一个
String str_1 = "我是张三"+"今年23";
3. 布尔类型
Boolean
Dart 使用 bool 类型表示布尔值。 Dart 只有字面量 true 和false 是布尔类型, 这两个对象都是编译时常量,Dart 这个语言没有像JavaScript 那样,0是false,1是true,或者非零即真
4. 集合
List
几乎每种编程语言中最常见的集合可能是 array 或有序的对象集合。 在 Dart 中的 Array 就是 List 对象, 通常称之为 List,Dart 中的 List 字面量非常像 JavaScript 中的 array 字面量,不过这种数据类型大差不差的,都是第一个元素索引从0开始,最后一个元素的索引是list.length-1,定义语法符号是[]。
List<int> lists = [1,2,3]; // 定义一个整型数据集合,这里面还有泛型的事情【后续会将】
添加
lists.add(4); // 添加单个元素
lists.add([5,6]); // 添加多个元素
获取长度
lists.length; // 6
移除元素
lists.removeAt(索引值);// 根据索引值进行元素移除
清除集合
lists.clear();
获取元素下标
lists.indexOf(元素值); // 根据元素值获取索引值
5. 去重集合
Set
在 Dart 中 Set 是一个元素唯一且无需的集合。 Dart 为 Set 提供了Set 类型,这个Set 集合是可去重的集合,里面没有重复的元素,它和List定义的时候不同它是{},而List是[]
// 定义一个Set<String>类型的集合Set
Set<String> halogens = {'李念', '哈哈', '真的么'};
Set<String> sets = {}; // 定义一个空的Set集合
添加元素
当然了添加已存在的值是不好用的
halogens.add("假的");
移除元素
halogens.remove('李念');// 移除一个值
是否包含
halogens.contains("李念");// 是否包含该值
5. 映射
Map
通常来说, Map 是用来关联 keys 和 values 的对象。 keys 和 values 可以是任何类型的对象。在一个 Map 对象中一个 key 只能出现一次。 但是 value 可以出现多次,这种方式理论上和JAVA是一样的,key是唯一值
var persons = new Map(); // 定义一个Person类型的映射,[new 是可选的]
persons['first'] = '张三';
persons['second'] = '李四';
persons['fifth'] = '王二麻子';
添加
persons['third'] = '哈哈'; // third是key,'哈哈'是value
获取值
persons['third'];// 通过key进行获取
是否包含key
persons.containsKey('third');// 查看集合中是否包含'third' key
变量定义
var 定义
变量仅存储对象引用,这里的变量是 name 存储了一个 String 类型的对象引用,变量的类型被推断为 String,Dart 语言是有类型推断的,这种其实和Rust语言挺像的
var name = "张三";
显示类型定义
就是在定义变量的时候直接声明变量的类型,直接将name定义为 String 类型
String name = "张三";
动态类型定义
动态类型定义是利用关键字 dynamic
dynamic name = "张三";
默认值
未初始化的变量默认值是 null。即使变量是数字类型默认值也是 null,因为在 Dart 中一切都是对象,数字类型也不例外
关键字
使用过程中从来不会被修改的变量, 可以使用 final 或 const, 而不是 var 或者其他类型, Final 变量的值只能被设置一次,const 变量在编译时就已经固定,最高级 final 变量或类变量在第一次使用时被初始化
Final
定义一个字符串类型的变量,这种类型是不能被改变的,只能被设置一次
final String nickname = '张三';
Const
如果需要在编译时就固定变量的值,可以使用 const类型变量。 如果 const 变量是类级别的,需要标记为 static const
const double pi = 3.14; // Π 这个变量是固定值可以设置为 const 的
小结
其实一看 Dart 的基础数据类型,以及 final 、const 等这些特性和java都是特别像的,和JS也有相似处,所以这门语言真的是结合百家之长,不过这个类型推断还是挺方便的,定义变量用 var 就行,创建对象的时候可以省略 new 关键字等等