美文网首页
Dart基础语法<二> 内置类型

Dart基础语法<二> 内置类型

作者: 果汁味Studio | 来源:发表于2020-12-25 20:04 被阅读0次

    内置类型

    ​对标Java 的八大内置基本数据类型,Dart 有以下七种内置类型:

    • Numbers
    • Strings
    • Booleans
    • Lists
    • Maps
    • Runes
    • Symbols
    Numbers
    1. num是数字类型的父类,有两个子类intdouble,分别对应整型和浮点型。
    2. intdouble在java中都是关键字,而在dart中是类
    3. int根据编译平台确定占用长度,最长为8字节
    4. int 有个bitLength()方法,可以确定存储需要占用的位数
    Strings(字符串)
    1. 字符串是 UTF-16 编码的字符序列。
    2. 使用单双引号均可创建字符串,且单双引号之间可以嵌套使用,可以避免一些\转义符的使用。
    void test() {
      String s1 = "\"test\"";
      String s2 = '"test"';
      print(s1);
      print(s2);
    }
    

    以上输出均为带双引号的"test"字符串

    1. 字符串中可通过$+{变量}方式引用变量拼接字符串,或把多个字符串放到一起实现拼接。
    void main() {
      String s1 = "Juice";
      String s0 = "is";
      String s2 = "My name  ${ s0}${s1}";
      String s3 = "My name  is" "Juice";
      print(s2);
      print(s3);
    }
    

    当然也可以像java一样通过 + 操作符拼接字符串

    1. 使用连续三个单双引号可以创建多行字符串对象
    void main() {
    String s1="""My
      name
      is
     Juice""";
      String s2='''My
     name
      is
    Juice''';
      print(s1);
      print(s2);
    }
    

    5.String提供一个 r 前缀用于创建 “原始 raw” 字符串

    void main() {
      //换行符
      String s1 = "\n";
      //输出\n
      String s2 = "\\n";
      //前面加上r前缀 标识raw:原始字符
      //输出同s2
      String s3 = r"\n";
    }
    
    Booleans(布尔值)

    ​Dart中称为 bool 的类型。 只有truefalse 两个布尔类型对象,和Java没太大的区别。

    Lists(数组)
    1. Dart 中,数组就是List对象。
    2. List进行遍历也和Java一样。
    void main() {
      List<int> list = new List();
      List<int> list1 = List();
      List<int> list2=[1,2,3,4,5];
      print(list2[1]);//获取下标为1的值
      //遍历数组
      //iter for-in 模板
      for (var o in list) {
    
      }
      //itar for-i模板
      for (var i = 0; i < list1.length; ++i) {
        var o = list1[i];
    
      }
    }
    
    1. 注意区分const 修饰数组的使用
    • const修饰数组对象,则对象不可变,不能再添加元素,会报以下错误
    • const修饰变量,即引用,则变量不能再引用其他对象,也不能再添加元素
    void main() {
      List<int> list3 = const [3, 4, 5, 6];
      list3.add(8);
    }
    
    数组.png
    void main() {
      const List<int> list4 =  [3, 4, 5, 6];
    //  list4=[3,2,1];报错   
    //  list4.add(5); 报错
    
    }
    
    Maps(映射集合)
    1. 键和值可以是任何类型的对象。
    2. 每个键只出现一次, 而一个值可以出现多次
    3. 对于不存在的key,则返回null
    4. 遍历和java一致
    5. constMap修饰参考上面的List
    void main() {
      //声明
      Map<int, int> map = {1: 1, 2: 2, 3: 3};
      print(map[1]); //获取key为1的值,注意这里的1是key不是下标
      map[1] = 5; //修改key为1的元素值
      map[8] = 120; //添加key为8的元素
      print(map[1]);
      print(map[8]);
    }
    
    Runes(用于字符串中Unicode字符的表示)

    Unicode为世界上所有书写系统中使用的每个字母,数字和符号定义了唯一的数值。 Dart 字符串本身只支持UTF-16 位代码单元字符序列, 所以出现Runes类用于UTF-32字符集中string 对象表示。

    1. 表达Unicode代码点的常用方法是\uXXXX ,其中XXXX 是4位十六进制值
    2. 要指定多于或少于4个十六进制数字,需要将值放在大括号中
    void main() {
      var clapping = '\u{1f44f}';
      //5个16进制 需要使用{}
      print(clapping); //👏
      //获得 16位代码单元
      print(clapping.codeUnits); //[55357, 56399]
    //获得unicode代码
      print(clapping.runes.toList()); //[128079]
      Runes input = new Runes(
          ' \u{1f47b}  \u{1f44d}');
      print(String.fromCharCodes(input));//输出 👻  👍
    }
    
    Symbols

    ​操作符标识符,表示程序中声明的运算符或标识符。

    var i = #A; //常量
    print(a.runtimeType);//获取对象运行时的类型 输出Symbol
    

    目前看来,SymbolsRunes在日常开发中较少使用。

    相关文章

      网友评论

          本文标题:Dart基础语法<二> 内置类型

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