数据类型
2-1变量与常量
使用var生命变量 未初始化默认为null
void main() {
// 既可以赋值数字也可以字符串
var a;
// 打印出null 由于声明未赋值
print(a);
a = 10;
// 打印出10
print(a);
// 打印出字符串hello dart
a = 'hello dart';
print(a);
// 既可以声明的时候赋值 也可以声明后赋值 打出20
var b = 20;
print(b);
//
final c = 30;
// final只能赋值一次的变量 不能继续赋值了
// c=50;
print(c);
// const声明常量 必须是编译器常亮
const d = 20;
// 常亮也是不能修改的
// d=50;
print(d);
}
2-2数值型
void main() {
// num是数值型的总称 包括浮点型(带小数点)和整形
num a = 10;
a = 12.5;
print(a);
int b = 20;
// double的值不能赋给int
// b=20.5
print(b);
double c = 10.5;
print(b + c);
print(b - c);
print(b * c);
print(b / c);
// 取整 1 20除以10.5取了整就是1
print(b ~/ c);
// 取余 9.5
print(b % c);
// 非数字 定义在double方法中 0.0/0.0=NAN
print(0.0 / 0.0);
// 打印b是否为偶数true
print(b.isEven);
// 打印b是否为奇数false
print(b.isOdd);
int e = -100;
// abs()方法取绝对值
print(e.abs());
double f = 10.5;
// 四舍五入11
print(f.round());
// 向下取整10
print(f.floor());
// 向上取整11
print(f.ceil());
// 转化为整形10
print(f.toInt());
// 转化为浮点型10.5
print(f.toDouble());
}
2-3字符串
void main() {
//
String str1 = 'hello';
// 三个引号代表打印多行字符串 或者三个双引号
String str2 = '''hello
dart''';
print(str2);
// \n换行
String str3 = 'hello \n dart';
print(str3);
// 字符串前面加个r可以避免字符被转义 打出hello \n dart
String str4 = r'hello \n dart';
print(str4);
String a1 = 'this is my fav lan';
// + this is my fav lannew
print(a1 + 'new');
// *代表打印5次
print(a1 * 5);
// 比较两字符串是否相同
print(str3 == a1);
// 取字符串第几位
print(a1[0]);
int a = 1;
int b = 2;
// 插值表达式 ${}可以转义为计算a+b的值 a+b=3
print('a+b=${a + b}');
// 如果插值表达式直接取变量值 就可以把大括号省略掉
print('a=$a');
// 取字符串长度
print(a1.length);
// 判断字符串是否为空
print(a1.isEmpty);
// 是否包含某个字符串
print(a1.contains('this'));
// 从0开始截取3位
print(a1.substring(0, 3));
// 是否是以a开头的 false
print(a1.startsWith('a'));
// 是否已a结尾
print(a1.endsWith('a'));
// 第一个i对应的下标
print(a1.indexOf('i'));
// 最后一个i对应的下标
print(a1.lastIndexOf('i'));
// 去前后的空格 left right可以单独去
print(a1.trim());
// 大写
print(a1.toUpperCase());
// 以空格进行分隔 返回数组
var a2 = a1.split(' ');
print(a2);
// 替换
print(a1.replaceAll('this', 'that'));
}
2-4布尔型
void main() {
// 声明方法 只有true或者false
bool a = true;
bool b = false;
print('hello'.isEmpty);
}
2-5列表
void main() {
// list元素可以是不同类型的
var list1 = [1, 2, 3, 'dart', true];
print(list1);
// 取第0个元素
print(list1[0]);
// 更改第1个元素
list1[1] = 'hello';
print(list1);
// 内容不可变的list
var list2 = const [1, 2, 3];
// 报错 不能修改常量数组
// list2[0]=5;
// list的创建
var list3 = new List();
// 打印[]
print(list3);
var a = ['heloo', 'dart'];
// 长度
print(a.length);
// 最后一位插入元素
a.add('new');
print(a);
// 在第二个元素插入字符串
a.insert(1, 'java');
print(a);
// 在数组中移除元素
a.remove('java');
print(a);
// 清空数组
// a.clear();
print(a);
// 是否包含某个元素 包含的话会打出元素下标 不包含打出-1
print(a.indexOf('dart'));
print(a.indexOf('dart1'));
// 按字母或者数值进行排序 [dart, heloo, new]
a.sort();
print(a);
// 从第二个元素开始截取[heloo, new]
print(a.sublist(1));
// 把元素逐个打印 传入的是一个方法
a.forEach(print);
}
2-6Map
void main() {
// 每一组元素都有键和值true:'2'不建议这样做
var map1 = {"first": "dart", 1: true, true: '2'};
print(map1);
// 打印key=first的value值 dart
print(map1['first']);
print(map1[true]);
// 修改map值
map1[1] = false;
print(map1);
var map2 = const {1: 'dart', 2: 'java'};
// 不能给不可变得map修改值
// map2[1]='1';
// 初始化
var map3 = new Map();
var a = {'first': 'dart', 'second': 'java', 'third': 'ph'};
// 长度
print(a.length);
print(a.isEmpty);
print(a.isNotEmpty);
//(first, second, third)
print(a.keys);
// (dart, java, ph)
print(a.values);
// 是否包含某个key
print(a.containsKey('first'));
// 是否包含某个value
print(a.containsValue('a'));
// 移除key=third的那一项
a.remove('third');
print(a);
// 传入一个方法 方法用插值表达式 取$key $value 结果:key=first,value=dart key=second,value=java
a.forEach(f);
// list转成map 下标作为key 元素作为值
var list = ['1', '2', '3'];
print(list.asMap());
}
void f(key, value) {
print('key=$key,value=$value');
}
2-7dynamic
void main() {
// a是动态类型 所以可以赋予不同的值
var a;
a = 10;
a = 'dart';
// 声明动态类型 new List<dynamic>();创建一个泛型 list中的类型随意
dynamic b = 20;
b = 'java';
var list = new List<dynamic>();
list.add(1);
list.add('hello');
list.add(true);
print(list);
}
运算符
3-1算数运算符
void main() {
int a = 10;
int b = 20;
print(a + b);
print(a - b);
print(a * b);
print(a / b);
print(a ~/ b);
print(a % b);
// 先使用a的值进行打印方法 再去给a加1 10
print(a++);
// 先进行+1 再把a的值传入print方法打印 12
print(++a);
// 12 先操作 再减1
print(a--);
// 10
print(--a);
}
3-2关系运算符
void main() {
int a = 5;
int b = 3;
// 判断内容是否相等 不判断类型
print(a == b);
print(a != b);
print(a > b);
print(a < b);
print(a >= b);
print(a <= b);
String a1 = '111';
String b1 = '321';
print(a1 == b1);
}
3-3逻辑运算符
void main() {
bool ist = true;
bool isf = false;
print(!ist);
// &&都为true才为true
print(ist && isf);
// ||一个为真就真
print(ist || isf);
// String a;
// 声明后不赋值不能判断 为null
// print(a.isEmpty);
String a = '';
// true
print(a.isEmpty);
// false
print(!a.isEmpty);
}
3-4赋值运算符
void main() {
int a = 10;
int b = 5;
// b??=10; b没有值会赋值 有值则无效
b ??= 10;
// 5
print(b);
// 12
a += 2;
print(a);
// 7
a -= 5;
print(a);
// 相当于a*b=? 35
print(a *= b);
// 7
print(a ~/= b);
// 2
print(a %= b);
// print(a/=b);
}
3-5条件表达式
void main() {
int gender = 0;
// 三目运算符
// String a=gender==0?'male':'female';
String a = gender == 0 ? 'male=$gender' : 'female=$gender';
print(a);
String b;
String c = 'java';
// b如果为空把c给b
String d = b ?? c;
print(d);
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。