美文网首页
dart语法2-内置类型

dart语法2-内置类型

作者: jxtx | 来源:发表于2020-05-16 17:03 被阅读0次

    dart语法1
    dart语法2-内置类型
    dart语法3-函数
    dart语法4-操作符
    dart语法5-异常
    dart语法6-类
    dart语法7-泛型
    dart语法8-库
    dart语法9-异步
    dart语法10-生成器
    dart语法11

    内置类型

    • Numbers 数值
    • Strings 字符串
    • Booleans 布尔值
    • Lists 列表(数组)
    • Sets 集合
    • Maps 集合
    • Runes 符号字符
    • Symbols 标识符

    内置类型-num, int, double

    • int : 整数值
    • double : 64-bit双精度浮点数
    • int和double是num的子类

    内置类型-String

    • Dart 字符串是 UTF-16 编码的字符序列,可以使用单引号或者双引号来创建字符串
    • 可以使用三个单引号或者双引号创建多行字符串对象
    • 可以使用 r 前缀创建”原始raw”字符串
    • 可以在字符串中使用表达式: ${expression},如果表达式是一个标识符,可以省略 {},如果表达式的结果为一个对象,则 Dart 会调用对象的 toString() 函数来获取一个字符串

    内置类型-bool

    • bool对象未初始化的默认值是null

    内置类型-List

    • Dart中可以直接打印list包括list的元素,List也是对象。java中直接打印list结果是地址值
    • Dart中List的下标索引和java一样从0开始和java一样支持泛型。
    • 有增删改查,支持倒序,自带排序、洗牌,可使用+将两个List合并

    内置类型-Map

    • 跟java类似

    内置类型-Set

    • set1.difference(set2):返回set1集合里有但set2里没有的元素集合
    • set1.intersection(set2):返回set1和set2的交集
    • set1.union(set2):返回set1和set2的并集
    • set1.retainAll():set1只保留某些元素(要保留的元素要在原set中存在)

    内置类型-Runes

    Runes用于在字符串中表示Unicode字符。
    使用String.fromCharCodes显示字符图形。
    如果非4个数值,需要把编码值放到大括号中

    内置类型-Symbol

    Symbol标识符,主要是反射用,现在mirrors模块已经被移除

    main() {
      /// ---------------------------------Numbers数值:num, int, double--------------------------------
      print('-----------------------Numbers------------------------');
      int i = 1; //整数值
      double d = 1.0; //double  64-bit (双精度) 浮点数
      int bitLength = i.bitLength;
      print('bitLength: ${bitLength}'); //bitLength判断int值需要多少bit位
      double maxFinite = double.maxFinite;
      print('maxFinite: ${maxFinite}'); //maxFinitedouble的最大值
      //int和double都是num的子类
      num n1 = 1;
      num n2 = 1.0;
      //支持十进制、十六进制
      int i1 = 0xfff;
      //科学计数法
      double d1 = 1.2e2; //120.0
      //转换
      //String->int
      int i2 = int.parse('1');
      double d2 = 1; //当double的值为int值时,int自动转成double
      print('d2: ${d2}');
    //  int i2 = int.tryParse('1.0');//返回null
    
      //int->String
      String str = 123.toString(); //数字也是对象
      print('-----------------------Numbers------------------------');
    
      /// ---------------------------------Strings字符串:String--------------------------------
      print('-----------------------Strings------------------------');
      //Dart 字符串是 UTF-16 编码的字符序列,可以使用单引号或者双引号来创建字符串
      var name = 'damon';
      //可以在字符串中使用表达式: ${expression},如果表达式是一个标识符,可以省略 {}。 如果表达式的结果为一个对象,则 Dart 会调用对象的 toString() 函数来获取一个字符串
      var names = 'dongnao ${name}';
      var rawNames = r'dongnao ${name}'; //r 前缀可以创建一个 “原始 raw” 字符串
      print('names: ${names}');
      print('rawNames: ${rawNames}');
      //如果表达式的结果为一个对象,则 Dart 会调用对象的 toString() 函数来获取一个字符串。
    //  print(Map);
      //可以使用三个单引号或者双引号也可以 创建多行字符串对象
      var multiLinesString = '''
      dongnao
      damon''';
      print('multiLinesString: ${multiLinesString}');
    
      //StringBuffer
      var sb = StringBuffer(); //dart 2 可以省略new
      sb..write('aaa')..write('bbb')..write('ccc'); //..级联符实现链式调用
      sb.writeAll(['ddd', 'eee', 'fff'], ','); //第二个参数表示分隔符,将第一个参数列表里的数据用这个分隔符拼接起来
      print('sb: ${sb}');
      print('-----------------------Strings------------------------');
    
      /// ---------------------------------Booleans布尔值:bool--------------------------------
      print('-----------------------Booleans------------------------');
      //bool :true 和false
      bool isNull;
      print('isNull: ${isNull}');
      print('-----------------------Booleans------------------------');
    
      /// ---------------------------------Lists列表(数组):List--------------------------------
      print('-----------------------Lists------------------------');
      //声明
      //自动长度
      List growableList = List();
    //  List growableList = new List()..length = 3;
      growableList..add(1)..add(2)..add('damon');
      print('growableList: ${growableList}');
      //固定长度
      var list = List(3); //List的声明,可以用var也可用List。
      list[0] = 1; //下标索引从0开始
      list[1] = 2;
      list[2] = 'damon';
      print('list: ${list}');
      //元素类型固定
      var typeList = List<int>();
      typeList.add(1);
      typeList.add(2);
      typeList.add(3);
      print('typeList: ${typeList}');
      //常用属性
      int first = typeList.first;
      print('typeList.first: ${first}'); //第一个元素
      int last = typeList.last;
      print('typeList.last: ${last}'); //最后一个元素
      int length = typeList.length;
      print('typeList.length: ${length}'); //元素个数
      bool isEmpty = typeList.isEmpty;
      print('typeList.isEmpty: ${isEmpty}'); //是否为空
      bool isNotEmpty = typeList.isNotEmpty;
      print('typeList.isNotEmpty: ${isNotEmpty}'); //是否不为空
      Iterable reversed = typeList.reversed;
      print('typeList.reversed: ${reversed}'); //倒序
      //常用方法 增删改查,排序,洗牌,复制子列表
      var list4 = [];
      //增
      list4.add(1);
      print('add 1 :${list4}');
      list4.addAll([2, 3, 4]);
      print('addAll [2, 3, 4] :${list4}');
      list4.insert(0, 0);
      print('insert(0, 0) :${list4}');
      list4.insertAll(1, [5, 6, 7]);
      print('insertAll(1, [5, 6, 7]) :${list4}');
      //删
      list4.remove(5);
      print('remove 5 :${list4}');
      list4.removeAt(2);
      print('remove at 0 :${list4}');
      //改
      list4[4] = 5;
      print('update list4[4] to 5 :$list4}');
      //range
      list4.fillRange(0, 3, 9);
      print('fillRange update list4[0]-list4[2] to 9 :$list4}');
      Iterable getRange = list4.getRange(0, 3);
      print('getRange list4[0]-list4[2] :$getRange}');
      //查
      var contains = list4.contains(5);
      print('list4 contains 5 :${contains}');
      var indexOf = list4.indexOf(1);
      print('list4 indexOf 1 :${indexOf}');
      int indexWhere = list4.indexWhere((test) => test == 5);
      print('list4 indexWhere 5 :${indexWhere}');
      //排序
      list4.sort();
      print('list4 sort :${list4}');
      //洗牌
      list4.shuffle();
      print('list4 shuffle :${list4}');
      //复制子列表
      var list5 = list4.sublist(1);
      print('sublist(1) list5 :${list5}');
      //操作符
      var list6 = [8, 9];
      print('list6 :${list6}');
      var list7 = list5 + list6;
      print('list5 + list6 :${list7}');
      print('-----------------------Lists------------------------');
    
      /// ---------------------------------Maps键值对集合:Map--------------------------------
      print('-----------------------Maps------------------------');
      //声明
      //动态类型
      var dynamicMap = Map();
      dynamicMap['name'] = 'dongnao';
      dynamicMap[1] = 'android';
      print('dynamicMap :${dynamicMap}');
      //强类型
      var map = Map<int, String>();
      map[1] = 'android';
      map[2] = 'flutter';
      print('map :${map}');
      //也可以这样声明
      var map1 = {'name': 'dongnao', 1: 'android'};
      map1.addAll({'name':'damon'});
      print('map1 :${map1}');
      //常用属性
    //  print(map.isEmpty); //是否为空
    //  print(map.isNotEmpty); //是否不为空
    //  print(map.length); //键值对个数
    //  print(map.keys); //key 集合
    //  print(map.values); //value集合
    
      //常用方法 增删改查
      print('-----------------------Maps------------------------');
    
      /// ---------------------------------Sets集合:Set--------------------------------
      print('-----------------------Sets------------------------');
      //6.  Set无重复列表
      var dynamicSet = Set();
      dynamicSet.add('dongnao');
      dynamicSet.add('flutter');
      dynamicSet.add(1);
      dynamicSet.add(1);
      print('dynamicSet :${dynamicSet}');
      //常用属性与list类似
    
      //常用方法 增删改查与list类似
      var set1 = {'dongnao', 'flutter'};
      print('set1 :${set1}');
      var set2 = {'dongnao', 'damon', 'dart'};
      print('set2 :${set2}');
      var difference12 = set1.difference(set2);
      var difference21 = set2.difference(set1);
      print('set1 difference set2 :${difference12}'); //返回set1集合里有但set2里没有的元素集合
      print('set2 difference set1 :${difference21}'); //返回set2集合里有但set1里没有的元素集合
      var intersection = set1.intersection(set2);
      print('set1 set2交集 :${intersection}'); //返回set1和set2的交集
      var union = set1.union(set2);
      print('set1 set2并集 :${union}'); //返回set1和set2的并集
      set2.retainAll(['dongnao', 'flutter']); //只保留(要保留的元素要在原set中存在)
      print('set2只保留dongnao flutter :${set2}');
      print('-----------------------Sets------------------------');
    
      /// ---------------------------------Runes符号字符--------------------------------
      //Runes用于在字符串中表示Unicode字符 https://copychar.cc/emoji/
      String runesStr = '👄';
      print(runesStr);
      print(runesStr.length); //表示占 2 个 16 位字符
      print(runesStr.runes.length); //表示占 1 个 32 位字符
    
      Runes runes = new Runes('\u{1f605} \u6211');
      var str1 = String.fromCharCodes(runes); //使用String.fromCharCodes显示字符图形
      print(str1);
      String str2 = '\u{1f605} \u6211'; //如果非4个数值,需要把编码值放到大括号中
      print(str2);
    
      /// ---------------------------------Symbols标识符--------------------------------
      //Symbol标识符 主要是反射用,现在mirrors已经被移除了
    }
    
    

    相关文章

      网友评论

          本文标题:dart语法2-内置类型

          本文链接:https://www.haomeiwen.com/subject/opvcohtx.html