使用 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);
}
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());
}
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'));
}
void main() {
// 声明方法 只有 true 或者 false
bool a = true;
bool b = false;
print('hello'.isEmpty);
}
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);
}
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');
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}