美文网首页
Dart - 变量

Dart - 变量

作者: 卖菇凉的小火柴丶 | 来源:发表于2020-07-23 17:28 被阅读0次

    1.Dart中变量的两种方式

      String str1 = "A";  //直接指定类型
      var str2 = "B";     //让编译器自己判断类型
    
      print(str1);
      print(str2);
    

    输出结果:

    A
    B

    2.Dart中类型的改变

    在Dart中一旦变量的类型被确定,就不能再被更改类型

      var name = "name";
      print(name.runtimeType);
      name = 10; //这里直接会报错
    
      String name;
      name = "abc";
      print(name.runtimeType);
      name = 10; //这里直接会报错
    

    输出结果:

    String
    String

    \color{red}{类型不能改变的特殊情况}

      var name;
      name = "abc";
      print(name.runtimeType);
      name = 10;
      print(name.runtimeType);
    

    输出结果:

    String
    int

    \color{red}{因为用var声明变量的时候没有直接赋值,那么该变量就是NULL,也就是Object,那么该变量的类型可以任意改变}

    3.dynamic和Object

    Object是dart所有对象的基类,也就是所有的类型都是Object的子类,包括int,Function,Null等。所以任意类型都可以用Object去声明。
    dynamic跟var一样都是关键词,都能声明变量。dynamic和Object一样都能表示任意类型,所以它俩声明的变量后期都可以改变类型。但是不同之处就是,dynamic会提供声明的变量的所有可能组合,而Object只是提供Object的属性与方法。
    日常推荐用Object。
    dynamic或者Object修饰的变量一旦赋值,编译器就能推断出该变量的具体的类型。

      dynamic name;
      print(name.runtimeType);
      name = "a";
      print(name.runtimeType);
      name = 10;
      print(name.runtimeType);
    

    输出结果:

    Null
    String
    int

      Object name;
      print(name.runtimeType);
      name = "a";
      print(name.runtimeType);
      name = 10;
      print(name.runtimeType);
    

    输出结果:

    Null
    String
    int

    4.final const

    这里用这两个关键词修饰以后似乎不应该叫变量了。
    如果不打算改变这个变量,那么就用这俩关键词修饰。

    区别:
    final修饰的变量是在第一次使用的时候才被初始化
    const是编译的时候就确定值

    相关文章

      网友评论

          本文标题:Dart - 变量

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