当前位置: 代码迷 >> 综合 >> Flutter 学习(二)执行入口|变量|常量|数据类型|运算符|流程控制|关键字
  详细解决方案

Flutter 学习(二)执行入口|变量|常量|数据类型|运算符|流程控制|关键字

热度:65   发布时间:2024-03-08 01:00:43.0

本章主要学习:Dart入口的方法,变量,注释,常量,数据类型

  • Flutter 学习(一)环境搭建以及开发工具配置

1. 执行入口

// 无返回值入口方法
void main() {// 打印print('helloWorld');
}main() {// 打印print('helloWorld');
}

2. 变量

2.1 String (字符串)

  // 未初始化,默认值nullString str;print(str);// 字符串定义String s1 = 'helloWorld';print(s1);String s2 = '222';// 字符串拼接print(s1 + s2);//String s3 = '''你好,我们一起学习Dart ''';print(s3);

2.2 int (整数)

  // 未初始化,默认值nullint n1;print(n1);int n2 = 100;print(n2);

2.3 double (小数)

  // 未初始化,默认值nulldouble d1;print(d1);double d2 = 1.0;print(d2);

2.4 bool (布尔)

  // 未初始化,默认值nullbool b1;print(b1);bool b2 = false;print(b2);

2.5 List ( 集合 )

  // 未初始化,默认值nullList list;print(list);//创建一个int类型的listList list1 = [1, 2, 3];// 输出[1, 2, 3]print(list1);// 使用List的构造函数List list2 = new List();//添加单个元素list2.add(1);//添加多个元素list2.addAll([2, 3, 4, 5]);print(list2);// 获取集合长度print(list2.length);// / 获取第一个元素print(list2.first);// 获取元素最后一个元素print(list2.last);// 利用索引获取元素print(list2[0]);// 查找某个元素的索引号print(list2.indexOf(2));// 删除指定位置的元素,返回删除的元素print(list2.removeAt(0));// 删除指定元素,成功返回true,失败返回false// 如果集合里面有多个2, 只会删除集合中第一个改元素list2.remove(2);// 删除最后一个元素,返回删除的元素list2.removeLast();// 删除指定范围(索引)元素,含头不含尾list2.removeRange(0, 1);// 删除指定条件的元素(这里是数字大于2)list2.removeWhere((item) => item > 2);// 删除所有的元素list2.clear();print(list2);// 限定list的长度添加int参数,表示List固定长度,不能进行添加 删除操作List list3 = new List(1);// nullprint(list3[0]);// [null]print(list3);

2.6 Map (字典)

  // 未初始化,默认值nullMap map;print(map);//创建一个mapMap map1 = {'key': '0', 'value': '1'};// {key: 0, value: 1}print(map1);//先声明一个map,再赋值Map map2 = new Map();map2['key'] = '0';map2['value'] = '1';// {key: 0, value: 1}print(map2);// 指定键值对参数类型var map3 = new Map<int, String>();// Map的赋值,中括号中是Key,这里可不是数组map3[1] = '123';//Map中的键值对是唯一的Key如果存在,Value会覆盖之前的数据map3[1] = '321';// map里面的value可以相同map3[2] = '123';// map里面value可以为空字符串map3[3] = '';// map里面的value可以为nullmap3[4] = null;print(map3);// 查看Map是否含有某Keyprint(map3.containsKey(1));//删除某个键值对map3.remove(1);print(map3);

2.7 var|Object|dynamic (动态类型)

  // 定义变量,没有明确类型,编译的时候根据值明确类型  var str1 = 'helloWorld';Object str2 = '张三';dynamic str3 = '李四';print(str1);print(str2);print(str3);

3. 常量

  // 使用final 或者 const 定义时就必须初始化,并且值只能设置一次final String str = '1';const String str2 = '2';//无法再次赋值 The final variable 'str' can only be set once// str = '3';// str2 = '3';//flnal 或者 const 不能和 var 同时使用// final var str3= '3';// const var str3= '3';

4. 运算符

描述 操作符
一元后置操作符 expr++ expr-- () [] . ?.
一元前置操作符 expr !expr ~expr ++expr --expr
乘除 * / % ~/
加减 + -
位移 << >>
按位与 &
按位或    
按位异或 ^
逻辑与 &&
逻辑或      
关系和类型判断 >= > <= < as is is!
== !=
如果为空 ??
条件表达式 expr1 ? expr2 : expr3
赋值 = *= /= ~/= %= += -= <<= >>= &= ^= = ??=
级联 ..

5.  流程控制

  • if...else
  • for
  • while do-whild
  • break continue
  • switch...case
  • assert(仅在checked模式有效)
int i = 0;// 单独一个条件if (i == 0) {print('i==0');}// 对立条件if (i != 0) {print('i!=0');} else {print('i==0');}// 多条件if (i > 0) {print('i>0');} else if (i < 0) {print('i<0');} else {print('i==0');}// 循环for (int j = 0; j < i; j++) {print(j);}for (int j = 1; j <= 100; j++) {if (j == 100) {// 退出循环break;}if (j % 2 != 0) {// 跳过接下来的操作continue;}print(j);}// 循环while (i == 0) {i += 1;}// 不管while里的条件是否满足,都会先执行一次方法体do {i += 1;print('i==0');} while (i == 0);//switch (i) {case 1:print('我是1');break;case 2:print('我是2');break;default:print('我是默认');}

注意:

break

  1. 在switch语句中使用流程跳出switch结构。
  2. 在循环语句中使流程跳出当前循环,遇到break循环终止,后面代码也不会执行。
  3. 如果在循环中已经执行了breck语句,就不会执行循环体中位于breck后的语句。
  4. 在多层循环中,一个break语句只能向外跳出一层。
  5. break可以用在switch case中 也可以用在for 循环中和while循环中

continue

  1. 只能在循环语句中使用,使本次循环结束,即跳过循环体中下面尚未执行的语句。
  2. continue可以用在for循环以及while循环中,但是不建议用在while循环中,容易死循环。

6. 关键字

关键字 - - -
abstract do import super
as dynamic in switch
assert else interface sync*
enum implements is this
async* export library throw
await external mixin true
break extends new try
case factory null typedef
catch false operator var
class final part void
const finally rethrow while
continue for return with
covariant get set yield*
default if static deferred
  相关解决方案