1.常量定义
var number;
number = 18;
print('小明的年龄是 $number 岁');
number = '20'; // 注意,变量类型是可以变的
print(number);
final c = 30; // final修饰的变量只能被申明一次,不可修改
print(c);
const d = 50;
print(d);
一些常用的判断属性
// 是否为负数, 大于0即为false
print(m1.isNegative);
print(0.isNegative);
// 是否是有限的
print(b32.isFinite);
print(m1.isFinite);
// 是否是无穷大或者无穷小
print(m1.isInfinite);
// 是否为偶数
print(m1.isEven);
// 是否为奇数
print(m1.isOdd);
// 是否是NaN值
print(m1.isNaN);
// 数据的符号,-1.0:值小于0、+1.0:值大于0、-0.0/0.0/NaN:值是其本身
print(21.sign); // 1
print(-23.sign); // -1
print(0.sign); // 0
print(-0.sign); // 0
int数字类型中常用的函数[绝对值 double 字符串]
const m3 = 24;
// 获取绝对值
print(m3.abs());
// 转成字符串
print(m3.toString());
// 幂次求模; m3的4次幂, 在对3求模
print(m3.modPow(4, 3)); // 1
// 返回m3和16的最大公约数
print(m3.gcd(16));
// 返回m3除以5的余数
print(m3.remainder(5));
// 转成double
print(m3.toDouble());
// 比较大小, 0:相同、1:大于、-1:小于
print(m3.compareTo(30));
2.操作符
var a = 15;
var b = 10;
print(a + b);
print(a - b);
print(a * b);
print(a / b);
print(a ~/ b);
print(a % b);
print(a.isEven); // 判断是否是偶数
print(a.isOdd); // 判断是否是奇数
print(b.isEven);
print(b.isOdd);
var c = 1.23;
print(c.floor());
print(c.round());
print(c.floor());
print(c.ceil());
print(c.toInt());
3.字符串操作
void main() {
var str1 = 'Hello'; // 单引号创建字符串
var str2 = "Hello2"; // 双引号创建字符串
// 三引号创建多行字符串
var str3 = '''你好
欢迎光临''';
var str4 = r'双11真给力';
var str5 = 'a|b|c|d|e|f|g';
var str6 = '小学一年级';
print(str1.toUpperCase());
print(str2.length);
print(str3.startsWith('你好'));//以..开始
print(str4);
print(str5.split('|'));//分割,切割
print(str6.replaceAll('小', '大'));//替换字符串
/*
输出结果:
I/flutter (22616): HELLO
I/flutter (22616): 6
I/flutter (22616): true
I/flutter (22616): 双11真给力
I/flutter (22616): [a, b, c, d, e, f, g]
I/flutter (22616): 大学一年级
*/
}
4.list数组操作
void test() {
var list = ['one', 'two', 'three'];
print('list.length:${list.length}'); // 获取长度
list.add('four'); // 增加一个元素
print(list);
list.remove('two'); // 移除一个元素
print(list);
list.insert(1, 'two'); // 在指定位置插入一个元素
print(list);
print(list.indexOf('one')); // 获取元素所在位置
print(list.sublist(2)); // 去除前2个元素,并返回一个新的List
list.forEach(print); // 传入一个方法
list.shuffle(); // 随机打乱List里元素的顺序
print(list);
print(list.asMap()); // 把list转换成map类型
var companies = ['阿里巴巴', '今日头条', '爱奇艺'];
print(!companies.isEmpty);
// forEach 遍历
companies.forEach((company) => print('$company在使用Flutter'));
// .map 遍历
var flutterCompanies = companies.map((company) => '$company在使用Flutter');
flutterCompanies.forEach(print);
// .map 合成数组
var flutterCompaniesList =
companies.map((company) => '$company在使用Flutter').toList();
print(flutterCompaniesList);
// 返回满足where条件的对象
print(companies.where((company) => company == '阿里巴巴'));
// 只要存在一个即可
print(companies.any((company) => company == '阿里巴巴'));
// 除了阿里巴巴,还有今日头条,爱奇艺
print(companies.every((company) => company == '阿里巴巴'));
/*输出结果
I/flutter (22616): list.length:3
I/flutter (22616): [one, two, three, four]
I/flutter (22616): [one, three, four]
I/flutter (22616): [one, two, three, four]
I/flutter (22616): 0
I/flutter (22616): [three, four]
I/flutter (22616): one
I/flutter (22616): two
I/flutter (22616): three
I/flutter (22616): four
I/flutter (22616): [two, four, one, three]
I/flutter (22616): {0: two, 1: four, 2: one, 3: three}
I/flutter (22616): true
I/flutter (22616): 阿里巴巴在使用Flutter
I/flutter (22616): 今日头条在使用Flutter
I/flutter (22616): 爱奇艺在使用Flutter
I/flutter (22616): 阿里巴巴在使用Flutter
I/flutter (22616): 今日头条在使用Flutter
I/flutter (22616): 爱奇艺在使用Flutter
I/flutter (22616): [阿里巴巴在使用Flutter, 今日头条在使用Flutter, 爱奇艺在使用Flutter]
I/flutter (22616): (阿里巴巴)
I/flutter (22616): true
I/flutter (22616): false
*/
}
5.运算符
1.三目运算符
- ?? 表示设置默认值
- int a = 20;
var b = a > 10 ? a : 0
;
2.~/ 除法, 返回一个整数结果:(取商)
var a = 12~/ 7;
print(a);//结果是1
3.级联操作符
类似链式调用
例如
ITTeacher()
..doWork()
..fixComputer();
4.as , is 与 is!
as : 判断属于某种类型
is : 如果对象具有指定的类型,则为true
is! : 如果对象具有指定的类型,则为false
5.异常捕获
try catch 连用
try {
// 捕获特定类型的异常}
catch(e){
// 报错信息打印
print(e);
}
6.补占位符
String padLeft(int width, [String padding = ' ']);
String padRight(int width, [String padding = ' ']);
在字符串前后补占位符
参数一: 想要得到的字符串的位数
参数二: 位数不足时, 补充的字符
const str3 = '12';
print(str3.padLeft(2, '0')); //12
print(str3.padRight(3, '0')); // 120
7.替换字符
// 只能替换一次, 参数三为开始的索引值, 默认0
String replaceFirst(Pattern from, String to, [int startIndex = 0]);
// 替换所有符合条件的字符(字符串)
String replaceAll(Pattern from, String replace);
// 替换某一区间的字符
String replaceRange(int start, int end, String replacement);
// 示例如下:
// 替换字符串
const str4 = 'titanjun12--0123';
print(str4.replaceFirst('t', 'T')); // Titanjun12--0123
print(str4.replaceFirst('12', '21', 10)); //titanjun12--0213
// 全部替换
print(str4.replaceAll('12', '21')); //titanjun21--0213
print(str4.replaceAll('t', 'T')); //TiTanjun12--0123
// 区间替换
print(str4.replaceRange(0, 5, 'top')); //topjun12--0123
8.List相关操作
8.1 filled
- 通过指定长度创建一个固定长度的List,并初始化每个位置的值
- 所有的元素都是相同的fill值。 如果指定的值是一个可变对象,那么List中所有的元素都是相同的对象,并且是可修改的
var l2 = new List.filled(3, 'l'); //[l, l, l]
var l3 = new List.filled(2, []); // [[], []]
l3[0].add(12);
print(l3); // [[12], [12]]
8.2 from
- 创建一个包含所有
elements
的List
-
elements
的Iterator
规定了元素的顺序。 - 当
growable
为true(默认)时,构造函数返回一个可增长的List。 否则,它返回一个固定长度的List
var l5 = new List.from([1, 2, 3, 4]);
l5.add(5);
print(l5); // [1, 2, 3, 4, 5]
// 下面的add方法会报错
var l5 = new List.from([1, 2, 3, 4], growable: false);
l5.add(5);
8.3 generate
- 生成一个包含所有值的List, 根据索引值创建元素
-
growable
为false
时,创建的List是固定长度的
var l4 = new List.generate(3, (int i) => i * i);
l4.add(14);
print(l4);
// [0, 1, 4, 14]
8.4 unmodifiable
- 创建一个包含所有elements的,
不可修改的List
- 不可修改的List不能改变它的长度或元素
- 如果元素本身是不可改变的,那么由此产生的List也是不可改变的
var l6 = new List.unmodifiable([1, 2, 3, 4]);
网友评论