小伙伴,大家新年好,这是我2021年开始写的文章啦!前一段时间不是过年嘛,就懒惰了一段时间,但是最近公司这边也开始确定了接下来的项目都是使用Flutter了,所以,为了保住饭碗,就毅然决然的走上了Flutter的道路,关于Flutter的介绍我就不多说了,大家可以百度下!
这篇文章主要是说下Dart语言的基础类型:
1、数字类型:主要分为三种,num,int,double,num是数字类型的父类,而int和double是整型数字和双精度数字
void _numType() {
num num1 = -1.0; //是数字类型的父类
num num2 = 2; //是数字类型的父类
int int1 = 3;
double d1 = 1.68;
print("num:$num1 num:$num2 int:$int1 double:$d1");
print(num1.abs()); //求绝对值
print(num1.toInt()); //转换成int
print(num1.toDouble()); //转换成double
}
2、字符类型:
///字符串
void _stringType() {
String str1 = '字符串', str2 = "双引号"; //定义字符串可用''也可以用""
String str3 = 'str:$str1 str2:$str2'; //字符串拼接和kotlin一样
String str4 = "常用数据类型,清查看控制台输出";
String str5 = " my name is jeffrey ";
String str6 = "MY NAME IS JEFFREY";
print(str3);
//字符串常用的方法,长度获取string.length
//1,字符串的截取,下标从0开始,截图不包含最后一位的
print(str4.substring(1, 5));
//2,获取指定字符串的位置
print(str4.indexOf("类型"));
//3,字符串分割String.split(分割点)[从什么位置开始分割],此分割只留下分割点前面那部分下来
print(str4.split(",")[0]);
//4,取当前索引位置字符的UTF-16码,暂时不知道有什么用
print(str4.codeUnitAt(0));
//5,判断当前字符串是否以"常用"开头,返回的是布尔类型
print(str4.startsWith("常用"));
//6,判断当前字符串是否以"输出"开头,返回的是布尔类型
print(str4.endsWith("输出"));
//7,把当前字符串转换为大写字母
print(str5.toUpperCase());
//8,把当前字符串转换为小写字母
print(str6.toLowerCase());
//9,判断当前字符串是否包含指定字符,返回布尔类型
print(str5.contains("is"));
//10,去除字符串首尾的空格
print(str5.trim());
//11,替换第一次出现指定字符位置的字符,参数1:被替换的指定字符,参数2:替换的内容
print(str5.replaceFirst("is", "are"));
//12,全部替换指定的字符
print(str5.replaceAll("f", "d"));
}
3、布尔类型:
///布尔类型,Dart是强 bool 类型检查,只有bool 类型的值是true才被认为是true
void _boolType() {
bool success = true, fail = false;
print(success || fail); //输出为true
print(success && fail); //输出为false
}
4、List集合:
///List集合
void _listType() {
print('----listType-----');
///集合初始化的方式,集合内容可以是任意类型的
List list=[1,2,3,"集合"];
//集合泛型的用法,<>为泛型的标志,限制了集合中元素的类型
List<int> list2=[1,2,3];
//添加元素到集合中,add添加单个元素,而addAll则是把某个集合的全部元素添加进来
List list3=[];
list3.add("list3");
list3.addAll(list);
print(list3);
//集合生成函数的用法,参数1:生成函数的长度(从0开始算),参数2:生成函数的规则,index为函数的位置
List list4=List.generate(3, (index) => index*2);
print(list4);
//集合遍历的三种方式方式
for(int i=0;i<list.length;i++){
print(list[i]);
}
for(var index in list){
print(index);
}
list.forEach((element) {
print(element);
});
//访问集合中的元素,下标从0开始
print(list4[0]);
//集合的长度
print(list4.length);
//在指定位置插入元素,参数1:指定的元素位置(下标从0开始),参数2:参入的内容
list.insert(3, "element");
print(list);
//移除指定位置的元素
List list5=[1,2,3,4,5];
list5.removeAt(4);
print(list5);
//清楚集合中的所有元素
List list6=[1,2,3];
list6.clear();
print(list6);
//截取子集合,参数1和2均为下标位置,下标从0开始,不包含最后下标的元素
print(list.sublist(1,3));
//获取集合中某个范围的元素,下标从0开始
print(list.getRange(1, 4));
//为每个元素之间增加字符进行拼接
print(list.join(","));
//判断集合是否为空,返回布尔类型
print(list.isEmpty);
//判断集合中是否含有该元素
print(list.contains(1));
}
5、map集合:
///map是将key和value相关联的对象,key和value都可以是任何类型的对象,并且key是唯一的,如果key重复,后面添加的key会替换前面的内容
void _mapType() {
print('----_mapType----');
///map初始化方法
Map names={'xiaoming':'小明','xiaohong':'小红'};
print(names);
Map ages={};
ages['xiaoming']=16;
ages['xiaohong']=18;
print(ages);
///Map遍历的三种方式
ages.forEach((key, value) {
print('$key,$value');
});
//注意=>是return的意思,MapEntry意思是map里面的每个map集合
Map ages2=ages.map((key, value) =>
//迭代生成新的一个Map
MapEntry(value,key)
);
print(ages2);
for(var key in ages.keys){
print('$key ${ages[key]}');
}
//判断是否含有指定的key,返回布尔类型
print(ages.containsKey("xiaoming"));
//判断是否含有指定的value,返回布尔类型
print(ages.containsValue(16));
//把map键值对中key或者value中提取出来形成List集合
print(ages.keys.toList());
//修改指定key的value值
print(ages['xiaoming']="小命");
//移除指定key的value值
Map map2={1:2,3:4};
map2.remove(1);
print(map2);
}
6、dynamic、var、object三者区别:
///科普小知识:dynamic、var、Object三者的区别
void _tips() {
///dynamic为动态数据类型,它所定义的变量在编译期间会失效,也就是编译中无法识别它所定义的类型,但是在运行中会依据它所定义的变量的内容进行类型推导
///而且它所定义的变量会依据它变量的值的变化,而在运行中类型也会进行变化
dynamic x="xiaoming";
print("${x.runtimeType} $x");
x=123;
print("${x.runtimeType} $x");
///var与dynamic的区别就是var所定义的变量在编译期间可以进行检测,但是var也是属性动态数据类型,在初次定义的时候可以不用声明数据类型,进行自动类型推导,但是在初次定义后,赋值其他数据类型
///就会编译报错
var y="xiaoming";
print(y.runtimeType);
print(y);
//y=123;会出现编译报错
///object是dart对象的基类,所以通过object定义的变量就会变成一个对象而不再是变量
Object o1='111';
print('${o1.runtimeType} $o1');
}
然后顺便安利下“熊喵先生”这位flutter的文章写得真的很到位,各位看官可以去看下,链接如下:
https://juejin.cn/post/6844903981827751949#heading-15
好啦,我继续去学习啦!!祝大家新的一年天天向上!!健健康康
网友评论