• Dart(5)-内置类型


    一、Numbers数值

    在dart中数字类型只有int和double两种,int和double的最大长度是64位,范围在2的63次方到负2的63次方减1,num是int和double的父类,如下代码:

    1. part of dart.core;
    2. abstract class int extends num {...}
    3. abstract class double extends num {...}
    4. abstract class num implements Comparable<num> {
    5. bool operator ==(Object other);
    6. int get hashCode;
    7. int compareTo(num other);
    8. num operator +(num other);
    9. num operator -(num other);
    10. num operator *(num other);
    11. num operator %(num other);
    12. double operator /(num other);
    13. int operator ~/(num other);
    14. num operator -();
    15. num remainder(num other);
    16. bool operator <(num other);
    17. bool operator <=(num other);
    18. bool operator >(num other);
    19. bool operator >=(num other);
    20. bool get isNaN;
    21. bool get isNegative;
    22. bool get isInfinite;
    23. bool get isFinite;
    24. num abs(); //绝对值
    25. num get sign;
    26. int round();//经过四舍五入得到整数
    27. int floor();//求向下的最大整数
    28. int ceil();//求向上最大的整数
    29. int truncate();//截取掉小数点取整
    30. ...
    31. }

    二、String

    (1)Dart 字符串是 用UTF-16 编码的字符序列,可以使用单引号双引号来创建字符串。

    (2)可以使用三个单引号或者双引号创建多行字符串对象。

    (3)使用+或者空格进行拼接字符串、也可以在字符串中使用转义字符

    (4)可以使用 r 前缀创建”原始raw”字符串。

    (5)可以在字符串中使用表达式: ${expression},如果表达式是一个标识符,可以省略 {},如果表达式的结果为一个对象,则 Dart 会调用对象的 toString() 函数来获取一个字符串。

    1. String str1 = 'helloworld'; //单引号定义
    2. String str2 = "helloworld" + 'abc'; //双引号定义 与 字符串相加
    3. String str3 = '''
    4. helloworld1
    5. helloworld2
    6. helloworld3
    7. '''; // 多行字符串
    8. String str4 = '''
    9. helloworld1\nhelloworld2
    10. helloworld3
    11. '''; // \n换行,\转义特殊字符
    12. String str5 = r'''
    13. helloworld1\nhelloworld2
    14. helloworld3'''; //字符串前加r(raw),打印原始数据
    15. String str6 = "abc" "def";
    16. String str7 = "输出str6的值$str6"; //使用$符号输出变量的值

    三、Booleans

    布尔,编程中必须有的,dart为我们提供布尔关键字是bool。但是有点不同,java中boolean默认是false,而dart中的bool默认值是null。如下:

    1. bool isTrue;
    2. print(isTrue ? "true" : 'false');
    1. Failed assertion: boolean expression must not be null
    2. #0 main (package:flutter_demo/dartEx.dart:75:9)
    3. #1 _startIsolate. (dart:isolate-patch/isolate_patch.dart:301:19)
    4. #2 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

    另外:if表达式中必须是bool类型,不然编译器会提示错误。

    四、Object类型

    在Dart语言中所有东西都是对象,都继承于Object, 所以可以使用Object可以定义任何的变量,而且赋值后,类型也可以更改。

    五、Lists集合

    (1)Dart中可以直接打印List内的元素,而不是像Java打印List对象的地址。

    (2)List集合的下标是从0开始

    (3)支持泛型

    六、Sets

    set1.difference(set2):返回set1集合里有但set2里没有的元素集合

    set1.intersection(set2):返回set1和set2的交集

    set1.union(set2):返回set1和set2的并集

    set1.retainAll():set1只保留某些元素(要保留的元素要在原set中存在)

    七、Maps

    Map集合是以键值对的形式,键和值中可以是任何类型(包括null)。在一个Map对象中键不能重复,而值可以重复,或者说每个建都有一个与之关联的值。Map的实现类有HashMap(无序)、LinkedHashMap(按键插入序列)、SplayTreeMap(按键的排序顺序)。通常不允许在正在Map上执行操作,例如在调用在[forEach]或[putIfAbsent]调用期间,在迭代键或值时修改映射也可能打断迭代。

    Map的创建

    (1) 花括号创建

    1. var map = {"key1":"value1", "key2":"value2", ..., "keyN":"valueN"};//不指定泛型
    2. var map2 = <String,String>{"key1":"value1", "key2":"value2", ..., "keyN":"valueN"};//指定泛型

    (2) 构造器创建

    1. Map map = new HashMap();//不指定泛型
    2. Map<String,String> map2 = new HashMap();//指定泛型
    3. map2["key1"] = "value1"; //赋值

    八、Runes符号字符串

    Dart字符串是UTF-16代码单元序列,而Runes 对象是一个UTF-32字节单元定义的Unicode字符串,它可以通过文字转换成符号表情或者代表特定的文字。这样设计也是考虑兼容 UTF-16 四个字节的情况。dart:core库中的String类提供了访问符文的方法,如下:

    • 使用String.codeUnitAt()函数

    • 使用String.codeUnits属性

    • 使用String.runes属性

    九、Symbols标识符

    Symbol对象表示在Dart程序中声明的运算符或标识符。您可能永远不需要使用符号,但它们对于按名称引用标识符的API非常有用,因为缩小会更改标识符名称而不会更改标识符符号。要获取标识符的符号,请使用符号文字,它只是#后跟标识符。一般Symbols用于Dart中的反射,但是注意在Flutter中禁止使用反射。

  • 相关阅读:
    kubernetes (k8s) list-watch机制、调度约束
    一道session文件包含题
    用啥Selenium?! .NET程序员就用自家的Playwright for .NET
    OpenGl材质
    【电商运营】在节日期间,这几个营销误区一定要避免!
    【java刷算法】牛客—剑指offer4DFS与BFS两种思路的碰撞,一起来练习吧
    怎样判断一个程序化交易策略失效还是正常失误?
    vue setup:Options API 迁移至 Composition API 的一些语法要点
    从0开始搭建vue2管理后台基础模板
    为什么要使用零知识证明来开发跨链协议
  • 原文地址:https://blog.csdn.net/life491249957/article/details/126022616