02.Dart - 运算符

寵の児 提交于 2020-03-01 02:28:14

个人学习用
不严谨
学习的话请看别的博客

算数运算符

void main() {
  /**
   *  算数运算符
   *  + 加
   *  - 减 ,或者负数
   *  * 乘
   *  / 除
   *  ~/ 除并取证
   *  % 取模
   *
   *  ++ 自增
   *  -- 自减
   */

  print(2 + 3); //加
  print(3 - 2); //减
  print(3 - 5 == -2); //负数
  print(3 * 2); //乘
  print(3 / 2); //除
  print(3 ~/ 1); //取余数
  print(3 % 2); //取模

  print('=========');

  int i = 1;

  print(++i); //2
  print(i++); //2
  print(++i); //4
  print(i--); //4
  print(i--); //3
  print(--i); //1
}

关系运算符

void main() {
  /**
   * == 相等
   * != 不等
   * > 大于
   * < 小于
   * >= 大于等于
   * <= 小于等于
   *
   */

  print(1 == 1);//  相等  true
  print(1 != 1);//  不等  false
  print(1 < 1);//   小于  false
  print(1 <= 1);//  小于等于 true
  print(1 > 1);//   大于  false
  print(1 >= 1);//  大于等于 true
}

类型判断运算符

void main() {
  /**
   * as  类型转换
   * is  判断是不是某种类型,是返回true
   * is! 判断不是某种类型,不是返回true
   */

  Object i = 1;
  print(i as int); //转换成int类型   1
  print(i is int); //判断是不是int类型  true
  print(i is double); //判断是不是double类型  false
  print(i is! int); //判断不是int类型        false
  print(i is! double); //判断不是double类型  true
}

赋值运算符

void main() {
  /**
   * 赋值运算符
   *
   * =    直接赋值
   * ??=  如果左边为null,就赋值,左边不为null就不赋值
   * +=  加等
   * -=  减等
   * *=  乘等
   * /=  除等
   * %=  取模等
   * ~/= 取余等
   * ^=
   * >>=
   * <<=
   * &=
   * |=
   */

  int a = 3;
  double d = 3;
  //进行运算
  print(a = 2);       //2  赋值
  a = 3;
  print(a ??= 2);     //2  a为空的话再赋值,不为空不赋值
  a = 3;
  print(a += 2);      //5  加等
  a = 3;
  print(a -= 2);      //1  减等
  a = 3;
  print(a *= 2);      //6  乘等

  print(d /= 2);      //1.5除等
  a = 3;
  print(a %= 2);      //1  取模等于
  a = 3;
  print(a ~/= 2);     //1  取余等于
  a = 3;
  print(a ^= 2);      //1  位取反运算等于
  a = 3;
  print(a >>= 2);     //0  右移两位等于
  a = 3;
  print(a <<= 2);     //12 左移两位等于
  a = 3;
  print(a &= 2);      //2  位与运算等于
  a = 3;
  print(a |= 2);      //3  位或运算
}

逻辑运算符

void main() {
  /**
   * 逻辑运算符
   *
   * !  表示结果取反
   * || 逻辑或
   * && 逻辑与
   */

  int a = 1;
  int b = 1;

  print(!(a == b || a >= b)); //false
  print(!!(a == b || a >= b));//true
  print(a == b || a >= b);    //true
  print(a == b && a < b);     //false
}

按位和位移运算符

void main() {
  /**
   * 按位和位移运算符
   *
   * &      按位与,都是1 才是1
   * |      按位或,有1就1
   * ^      按位异或,有0就0
   * ~      按位取反,1变0,0变1
   * <<     按位左移
   * >>     按位右移
   */

  final value = 0x22; //十六进制 的 34
  final bitmask = 0x0f; //十六进制的 15
  print(value);   // 34
  print(bitmask); // 15

  print(value & bitmask);     // 2
  print(value | bitmask);     // 47
  print(value ^ bitmask);     // 45
  print(value & ~bitmask);    // 32
  print(value << bitmask);    // 1114112
  print(value >> bitmask);    // 0
}

条件表达式

void main() {
  /**
   *   条件 ? 表达式1 : 表达式2
   *
   *   表达式1 ?? 表达式2     //如果表达式1不为空,则返回表达式1,如果表达式1位空,返回表达式2
   *
   *
   */

  int a = 0;

  print(a > 0 ? a : a = 3); //3
  print(a > 0 ?? a <= 0); //true
}

级联运算符

void main() {
  /**
   *   .. 级联运算符,就相当于链式调用
   *
   *
   */
}

其他运算符

void main() {
  /**
   * 其他 运算符
   *
   * () 使用方法,或者代表改变优先级
   * [] 访问List数组中的特定位置元素
   * .  成员访问符号
   * ?. 安全操作符: 调用的时候先判断 是不是为空,如果为空直接输出空,不为空再调用
   *
   */

  var clazz = new MyClazz();
  clazz.printF();

  List list = [1, 2, 3];
  int a = list[1]; //2
  print(a);

  print(list?.length); //如果 list为空的话,直接返回null,有数据才能使用length
}

class MyClazz {
  void printF() {}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!