1.变量和常量
变量:var
常量: final 和 const
变量区别:
const值不变,一开始就得赋值,final可以开始不赋值,只能赋一次。
而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化
2.常用的数据类型(有些语法和OC很相似)
字符串
String str1 = '你好';
String str2 = 'Dart';
print(str1 + str2);
数值
int 必须是整型
double 既可以是整型 也可是浮点型
布尔 bool
bool flag=true
数组
1、第一种定义List的方式
var l1 = ['aaa', 'bbbb', 'cccc'];
print(l1);
print(l1.length);
print(l1[1]);
2、第二种定义List的方式
var l2 = new List();
l2.add('张三');
l2.add('李四');
l2.add('王五');
3、定义List指定类型
var l3 = new List<String>();
l3.add('张三');
print(l3);
字典
1.第一种定义 Maps的方式
var person = { //也可以var改为Map,指定类型
"name": "张三",
"age": 20,
"work": ["程序员", "送外卖"]
};
print(person);
print(person["name"]);
print(person["work"]);
2.第二种定义 Maps的方式
var p = new Map();
p["name"] = "李四";
p["age"] = 22;
p["work"] = ["程序员", "送外卖"];
print(p);
print(p["age"]);
3.类型判断
var str = 123;
if (str is String) {
print('是string类型');
} else if (str is int) {
print('int');
} else {
print('其他类型');
}
4.运算符,表达式以及条件判断和OC类似。
- ??=
//表示如果b为空的话把 23赋值给b,不为空可以忽略掉
int b;
b??=23;
print(b);
- ??
//如果a为空,b打印10.不为空,打印22。
var a=22;
var b= a ?? 10;
print(b);
5.类型转换
// String类型转成Number类型使用int.parse()
//String类型转成double类型使用double.parse()
String str = '123';
var myNum = int.parse(str);
// Number类型转换成String类型使用 toString()
var num = 2;
String str = num.toString();
print(str is String);
6.++的区别
在赋值运算里面 如果++ -- 写在前面 这时候先运算 再赋值,如果++ --写在后面 先赋值后运行运算
var a=10;
var b=a++; //先a的值赋值给b,再a=a+1
print(a); //11
print(b); //10
var a=10;
var b=++a;//先a=a+1 ,再将a的值赋值给b
print(a); //11
print(b); //11
7.List的常用方法
定义方法参考上面的 [2.常用的数据类型]
List myList=['香蕉','苹果','西瓜'];
print(myList.length); //length 长度
print(myList.isEmpty); //isEmpty 是否为空
print(myList.isNotEmpty); //isNotEmpty 是否不为空
print(myList.reversed); //reversed 翻转
var newMyList=myList.reversed.toList(); //toList() 其他类型转换成List
myList.add('桃子'); //add 增加
myList.addAll(['桃子','葡萄']); //addAll 拼接数组
print(myList.indexOf('苹果')); //indexOf 查找数据,查找不到返回-1 查找到返回索引值
myList.remove('西瓜'); //remove 删除 传入具体值
myList.removeAt(1); // removeAt 删除 传入索引值
myList.fillRange(1, 3,'aaa'); //fillRange 从下表1-3修改为aaa
myList.insert(1,'aaa'); //insert(index,value) 指定位置插入
myList.insertAll(1, ['aaa','bbb']); //insertAll(index,list) 指定位置插入List
var str=myList.join('-'); // join() List转换成字符串
print(str);
var str1='香蕉-苹果-西瓜'; // split() 字符串转化成List
var list=str.split('-');
8.Set
用它最主要的功能就是去除数组重复内容
Set是没有顺序且不能重复的集合,所以不能通过索引去获取值
List myList = ['香蕉', '苹果', '西瓜', '香蕉', '苹果', '香蕉', '苹果'];
var s = new Set();
s.addAll(myList);
print(s);
print(s.toList());
9.Map
定义方法参考上面的 [2.常用的数据类型]
Map person={
"name":"张三",
"age":20,
"sex":"男"
};
print(person.keys); //keys 获取所有的key值
print(person.values); //values 获取所有的value值
print(person.isEmpty); //isEmpty 是否为空
print(person.isNotEmpty); //isNotEmpty 是否不为空
person.remove("sex"); //remove(key) 删除指定key的数据
person.addAll({ //addAll({...}) 合并映射 给映射内增加属性
"work":['敲代码','送外卖'],
"height":160
});
print(person.containsValue('张三')); //containsValue 查看map内是否有某个值
print(person.containsKey('age')); //containsKey 查看map内是否有某个key
10.通用方法(forEach,map,where,any,every)
//forEach 遍历
List myList = ['香蕉', '苹果', '西瓜'];
myList.forEach((value) {
print("$value");
});
//结果返回 香蕉 苹果 西瓜
Map person = {"name": "张三", "age": 20};
person.forEach((key, value) {
print("$key---$value");
});
//返回 name---张三 age---20
//map 主要修改集合内的数据
List myList=[1,3,4];
var newList=myList.map((value){
return value*2;
});
print(newList.toList()); //结果返回 [2, 6, 8]
//where 满足条件的返回一个集合
List myList = [1, 3, 4, 5, 7, 8, 9];
var newList = myList.where((value) {
return value > 5;
});
print(newList.toList()); //结果返回[7, 8, 9]
//any 只要集合里面有满足条件的就返回true
List myList = [1, 3, 4, 5, 7, 8, 9];
var f = myList.any((value) {
return value > 5;
});
print(f); //结果为true
//every 每一个都满足条件返回true 否则返回false
List myList = [1, 3, 4, 5, 7, 8, 9];
var f = myList.every((value) {
return value > 5;
});
print(f); //结果为false
网友评论